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 = []){}
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.
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()
.
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.
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