Maison > développement back-end > tutoriel php > 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
Libérer: 2024-10-30 07:34:03
original
1066 Les gens l'ont consulté

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

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!

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