Maison  >  Article  >  développement back-end  >  Pourquoi ne puis-je pas initialiser des propriétés avec des fonctions anonymes en PHP ?

Pourquoi ne puis-je pas initialiser des propriétés avec des fonctions anonymes en PHP ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-30 07:34:031008parcourir

Why Can't I Initialize Properties with Anonymous Functions in PHP?

Initialisation de propriété avec des fonctions anonymes : pourquoi et comment ?

Comme mentionné dans l'extrait de code ci-dessous, initialiser une propriété avec une fonction anonyme pendant La déclaration de classe déclenche une "Erreur d'analyse : erreur de syntaxe, T_FUNCTION inattendue" en PHP. Pourtant, attribuer des fonctions à des propriétés au sein des constructeurs est possible, comme le démontre le deuxième extrait.

<code class="php">// Property initialization with anonymous function error
class AssignAnonFunction {
    private $someFunc = function() {
        echo "Will Not work";
    };
}

// Property initialization in constructor
class AssignAnonFunctionInConstructor {
    private $someFunc;

    public function __construct() {
        $this->someFunc = function() {
            echo "Does Work";
        };
    }
}</code>

L'incapacité d'initialiser les propriétés directement avec des fonctions anonymes provient de l'implémentation de PHP. Les propriétés doivent être initialisées avec des valeurs constantes évaluables lors de la compilation, et les fonctions ne répondent pas à ce critère.

Malgré cette limitation, PHP permet l'affectation de fonctions à des propriétés au sein des constructeurs. En effet, les constructeurs sont exécutés au moment de l'exécution, ce qui permet des affectations dynamiques.

Bien que cette solution de contournement offre de la flexibilité, l'absence d'initialisation directe des propriétés avec des fonctions anonymes peut être un inconvénient dans certains scénarios. Cela nécessite du code supplémentaire et peut avoir un impact sur la lisibilité du code.

Bien que la raison de cette décision de conception en PHP reste quelque peu spéculative, les explications possibles incluent la complexité de la mise en œuvre d'une telle fonctionnalité et une demande insuffisante.

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