2014-10-30 9 views
20

Ho una piccola domanda simmetrica.Array PHP vs [] nel metodo e dichiarazione variabile

Quando si definiscono funzioni e variabili, quale convenzione dovrei usare?

So che fanno la stessa cosa in pratica, ma mi piacerebbe sapere quale metodo è conforme agli standard delle migliori pratiche.

Variabili

public $varname = array(); 

o

public $varname = []; 

Metodi

public function foo($bar = array()){} 

o

public function foo($bar = []){} 
+0

Si aspetta che il codice venga eseguito nella versione php <5.4? usa 'array()' altrimenti scegliene uno ed è coerente. Non esiste uno standard ufficiale. – Steve

+0

Detto questo, se stai usando un framework (e probabilmente dovresti esserlo), segui qualsiasi pratica il framework usi – Steve

+0

Grazie, sto usando cakphp 3.0 con alcuni mix di zend. CakePHP sembra mixarlo un po 'e avere zend non investigato. Non schiererà mai su qualcosa al di sotto di 5.4. Pensa [] aiuta con la leggibilità in quanto distingue tra metodo e parentesi graffe. –

risposta

28

PSR-2 (per PHP Framework Interoperability Group) non menziona la sintassi di array breve. Ma come potete vedere nel chapter 4.3 usano la sintassi di array breve per impostare il valore predefinito di $arg3 come array vuoto.

Quindi per PHP> = 5.4 la sintassi di array breve sembra essere lo standard di fatto. Utilizzare solo array(), se si desidera che lo script venga eseguito su PHP < 5.4.

7

da PHP docs:

Dal PHP 5.4 è anche possibile utilizzare la sintassi array di breve, che sostituisce array() con [].

<?php 
$array = array(
    "foo" => "bar", 
    "bar" => "foo", 
); 

// as of PHP 5.4 
$array = [ 
    "foo" => "bar", 
    "bar" => "foo", 
]; 
?> 

se si desidera provare a utilizzare '[]' notazione nella versione precedente alla 5.4, fallirà, e PHP lancerà una syntax error

per compatibilità con le versioni si dovrebbe usare array() sintassi.

+2

Non con downvoted, ma non vedo come questo risponda alla domanda a tutti – Steve

+0

^esattamente ...... – itachi

+0

Penso che risponda alla domanda, cercando di usare La notazione '[]' in una versione precedente alla 5.4 è fuori questione ed è impossibile. –

3

Dipende da quale versione di PHP si sta prendendo di mira. Per la migliore compatibilità con le versioni precedenti, ti consiglio di utilizzare array(). Se non ti interessa le versioni precedenti (< PHP 5.4), ti consiglio di utilizzare una versione più breve.

Problemi correlati