web-dev-qa-db-fra.com

PHP tableau vs [] dans la déclaration de méthode et de variable

J'ai une question sur la syntaxe PHP.

Lors de la définition des fonctions et des variables, quelle convention dois-je utiliser?

Je sais qu'ils font la même chose dans la pratique, mais j'aimerais savoir quelle méthode est conforme aux normes de meilleures pratiques.

Variables

public $varname = array();

ou

public $varname = [];

Méthodes

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

ou

public function foo($bar = []){}
50
Dieter Gribnitz

PSR-2 (par PHP Framework Interoperability Group ) ne mentionne pas la syntaxe courte des tableaux. Mais comme vous pouvez le voir dans chapitre 4. ils utilisent une syntaxe de tableau courte pour définir la valeur par défaut de $arg3 Comme un tableau vide.

Ainsi, pour PHP> = 5.4, la syntaxe de tableau court semble être la norme de facto. N'utilisez que array(), si vous voulez que votre script s'exécute sur PHP <5.4.

61
BreyndotEchse

de PHP docs :

Depuis PHP 5.4, vous pouvez également utiliser la syntaxe de tableau court, qui remplace array () par [].

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

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

si vous essayez d'utiliser la notation '[]' dans une version antérieure à 5.4, cela échouera et PHP lancera un syntax error

pour la compatibilité descendante, vous devez utiliser la syntaxe array().

20
Nitsan Baleli

Cela dépend de la version de PHP que vous ciblez. Pour une meilleure compatibilité descendante, je vous recommande d'utiliser array (). Si vous ne vous souciez pas des anciennes versions (<PHP 5.4), je vous recommande d'utiliser une version plus courte.

6
Valentin Rodygin

viens de faire un test pour voir comment [] fonctionne vs array () voici ce que j'ai

testing 1 million []s ( with $arr[] = [] )
started at : 1561298821.8754
ended at: 1561298822.6881
difference: 0.81266021728516 seconds 

testing 1 million array()s ( with array_Push( $arr, array()) )
started at : 1561298822.6881
ended at: 1561298823.843
difference: 1.1549289226532 seconds 

testing 1 million []s ( again while the processor is hotter)
started at : 1561298823.8431
ended at: 1561298824.7448
difference: 0.9017219543457 seconds 

[] a donc effectué environ 20% plus rapidement

3
Aurangzeb