"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que não consigo inicializar propriedades com funções anônimas em PHP?

Por que não consigo inicializar propriedades com funções anônimas em PHP?

Publicado em 2024-11-07
Navegar:887

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

Inicialização de propriedade com funções anônimas: por que e como?

Conforme mencionado no snippet de código abaixo, inicializar uma propriedade com uma função anônima durante a declaração de classe aciona um "Erro de análise: erro de sintaxe, T_FUNCTION inesperado" em PHP. No entanto, é possível atribuir funções a propriedades dentro de construtores, conforme demonstrado no segundo trecho.

// 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";
        };
    }
}

A incapacidade de inicializar propriedades diretamente com funções anônimas decorre da implementação do PHP. As propriedades devem ser inicializadas com valores constantes que podem ser avaliados durante a compilação, e as funções não atendem a esse critério.

Apesar dessa limitação, o PHP permite a atribuição de funções a propriedades dentro de construtores. Isso ocorre porque os construtores são executados em tempo de execução, permitindo atribuições dinâmicas.

Embora essa solução alternativa forneça flexibilidade, a falta de inicialização direta de propriedades com funções anônimas pode ser uma desvantagem em determinados cenários. Ele requer código adicional e pode afetar a legibilidade do código.

Embora o motivo dessa decisão de design em PHP permaneça um tanto especulativo, as possíveis explicações incluem a complexidade da implementação de tal recurso e a demanda insuficiente por ele.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3