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
Libérer: 2024-11-20 00:37:03
original
885 Les gens l'ont consulté

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),  
);
Copier après la connexion

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
Copier après la connexion

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(…);
Copier après la connexion

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();
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal