Maison >développement back-end >tutoriel php >Comment puis-je initialiser correctement des variables statiques complexes en PHP ?
Initialisation des variables statiques en PHP
Lors de l'initialisation des variables statiques en PHP, vous pouvez rencontrer des erreurs de syntaxe avec des expressions non triviales dans l'initialiseur, comme on le voit dans l'extrait de code ci-dessous :
private static $dates = array( 'start' => mktime( 0, 0, 0, 7, 30, 2009), // Start date 'end' => mktime( 0, 0, 0, 8, 2, 2009), // End date 'close' => mktime(23, 59, 59, 7, 20, 2009), // Date when registration closes 'early' => mktime( 0, 0, 0, 3, 19, 2009), // Date when early bird discount ends );
Solution de contournement :
Une solution consiste à éviter les expressions complexes dans l'initialiseur et à attribuer les valeurs après avoir défini la classe :
class Foo { static $bar; } Foo::$bar = array(…);
Une autre option consiste à utiliser une fonction statique pour initialiser la variable :
class Foo { private static $bar; static function init() { self::$bar = array(…); } } Foo::init();
PHP Amélioration 5.6 :
PHP 5.6 prend en charge certaines expressions dans les initialiseurs de variables statiques. Par exemple, vous pouvez définir une classe abstraite avec une fonction statique privée pour initialiser la variable :
abstract class Foo{ private static function bar(){ static $bar = null; if ($bar == null) bar = array(...); return $bar; } /* use where necessary */ self::bar(); }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!