Maison >développement back-end >tutoriel php >Comment puis-je initialiser correctement des variables statiques avec des expressions complexes en PHP ?
Initialisation des variables statiques en PHP
PHP présente un défi lors de l'initialisation de variables statiques en raison de son incapacité à évaluer des expressions non triviales dans les initialiseurs . Considérez le code suivant :
private static $dates = array( 'start' => mktime( 0, 0, 0, 7, 30, 2009), 'end' => mktime( 0, 0, 0, 8, 2, 2009), 'close' => mktime(23, 59, 59, 7, 20, 2009), 'early' => mktime( 0, 0, 0, 3, 19, 2009), );
Ce code déclenche une erreur d'analyse car PHP attend un ")" après l'opérateur d'affectation, comme le montre le message d'erreur suivant :
Parse error: syntax error, unexpected '(', expecting ')' in /home/user/Sites/site/registration/inc/registration.class.inc on line 19
Pour contourner cette limitation, nous pouvons employer des approches alternatives :
1. Initialisation différée
Après avoir défini la classe, nous pouvons initialiser explicitement la variable statique à l'aide d'un bloc de code séparé :
class Foo { static $bar; } Foo::$bar = array(…);
2. Méthode d'initialisation statique
Nous pouvons définir une méthode statique au sein de la classe pour initialiser la variable :
class Foo { private static $bar; static function init() { self::$bar = array(…); } } Foo::init();
Remarque : PHP 5.6 a introduit la prise en charge de certaines expressions dans les initialiseurs de variables statiques, mais cette fonctionnalité est limitée.
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!