Maison >développement back-end >tutoriel php >Comment puis-je initialiser correctement des variables statiques avec des expressions complexes en PHP ?

Comment puis-je initialiser correctement des variables statiques avec des expressions complexes en PHP ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-20 00:37:03883parcourir

How Can I Properly Initialize Static Variables with Complex Expressions in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn