Maison >développement back-end >tutoriel php >Comment initialiser correctement les variables statiques en PHP ?

Comment initialiser correctement les variables statiques en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-25 05:04:12280parcourir

How to Properly Initialize Static Variables in PHP?

Initialisation des variables statiques en PHP : un guide

Problème :

Vous rencontrez une erreur lors de l'initialisation des variables statiques en PHP code utilisant la syntaxe private static $dates = array(...);. Plus précisément, vous recevez une « erreur de syntaxe » liée à des parenthèses inattendues.

Réponse :

En PHP, les expressions complexes ne peuvent pas être utilisées directement dans les initialiseurs de variables statiques. Voici deux méthodes pour contourner cette limitation :

Méthode 1 : Utilisation du code d'initialisation de classe

Après avoir défini la classe, ajoutez le code suivant :

class Foo {
  static $bar;
}
Foo::$bar = array(...);

Méthode 2 : Utiliser une méthode d'initialisation statique

Définir une méthode d'initialisation statique méthode d'initialisation et appelez-la manuellement :

class Foo {
  private static $bar;
  static function init()
  {
    self::$bar = array(...);
  }
}
Foo::init();

PHP 5.6 :

Dans PHP 5.6 et versions ultérieures, vous pouvez utiliser des expressions limitées dans les initialiseurs de variables statiques. Toutefois, pour les expressions complexes, les méthodes ci-dessus peuvent s’avérer nécessaires. Pour les classes abstraites, la syntaxe suivante peut être utilisée :

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!

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