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.
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