"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 > Como corrigir o erro “A propriedade digitada não deve ser acessada antes da inicialização” no PHP?

Como corrigir o erro “A propriedade digitada não deve ser acessada antes da inicialização” no PHP?

Publicado em 23/12/2024
Navegar:611

How to Fix the \

Compreendendo o erro "Propriedade digitada não deve ser acessada antes da inicialização"

Com a introdução de dicas de tipo de propriedade no PHP 7.4, é crucial atribuir valores válidos a todas as propriedades para garantir que seus tipos declarados sejam respeitados. Uma propriedade indefinida, sem valor atribuído, não corresponde a nenhum tipo declarado e dispara a mensagem de erro: "A propriedade digitada não deve ser acessada antes da inicialização".

Por exemplo, considere o código abaixo:

class Foo {
    private string $val;

    public function __construct(int $id) {
        $this->id = $id;
    }

    public function getVal(): string { return $this->val; }
}

Acessar $val após construir Foo resultaria em erro, pois seu tipo ainda não está definido (indefinido!== null).

Para resolver isso, atribua valores a todas as propriedades durante construção ou defina valores padrão para eles:

class Foo {
    private string $val = null;  // default null value

    public function __construct(int $id) {
        $this->id = $id;
    }
}

Agora, todas as propriedades têm valores válidos, eliminando o erro.

Esse problema também pode surgir ao confiar em valores de banco de dados para propriedades de entidade, como IDs gerados automaticamente ou carimbos de data/hora. Para IDs gerados automaticamente, declare-os como anuláveis:

private ?int $id = null;

Para todos os outros, escolha valores padrão apropriados que correspondam aos seus tipos.

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