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

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

Barbara Streisand
Libérer: 2024-11-27 17:44:11
original
854 Les gens l'ont consulté

How Can I Properly Initialize Complex Static Variables in 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
);
Copier après la connexion

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

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

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

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 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