Pourquoi ne puis-je pas initialiser une propriété de classe avec une fonction anonyme en PHP ?

Linda Hamilton
Libérer: 2024-10-26 20:53:29
original
115 Les gens l'ont consulté

 Why Can't I Initialize a Class Property with an Anonymous Function in PHP?

Initialisation d'une propriété de classe avec une fonction anonyme

L'impossibilité d'initialiser directement une propriété de classe à une fonction lors de la déclaration de la propriété en PHP est due aux limitations de la syntaxe de déclaration de propriété du langage.

PHP ne permet pas l'initialisation de propriétés avec des expressions qui ne peuvent pas être évaluées au moment de la compilation. Les fonctions, étant des entités dynamiques, ne peuvent pas être évaluées statiquement et ne peuvent donc pas être utilisées pour l'initialisation de propriétés.

Cela est évident dans l'extrait de code suivant, qui entraîne une erreur de syntaxe :

<code class="php">class AssignAnonFunction {
    private $someFunc = function() {
      echo "Will Not work";
    };
}</code>
Copier après la connexion

Cependant, il est possible d'attribuer une fonction à une propriété après que la classe ait été instanciée. Ceci peut être réalisé en utilisant la méthode constructeur :

<code class="php">class AssignAnonFunctionInConstructor {
    private $someFunc;

    public function __construct() {
      $this->someFunc = function() {
        echo "Does Work";
      };
    }
}</code>
Copier après la connexion

La raison de cet écart est que l'attribution des propriétés dans le constructeur se produit au moment de l'exécution, où les fonctions peuvent être attribuées dynamiquement.

C'est Il est important de noter que la limitation de l'initialisation des propriétés avec des fonctions est un aspect fondamental de la conception du langage PHP. Bien que cela puisse être gênant dans certains scénarios, cela garantit que les propriétés sont initialisées avec des valeurs cohérentes et évite les erreurs d'exécution.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!