"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo solucionar el error \"No se debe acceder a la propiedad escrita antes de la inicialización\" en PHP?

¿Cómo solucionar el error \"No se debe acceder a la propiedad escrita antes de la inicialización\" en PHP?

Publicado el 2024-12-23
Navegar:766

How to Fix the \

Comprender el error "No se debe acceder a la propiedad escrita antes de la inicialización"

Con la introducción de sugerencias de tipo de propiedad en PHP 7.4, es crucial asignar valores válidos a todas las propiedades para garantizar que se respeten los tipos declarados. Una propiedad indefinida, sin valor asignado, no coincide con ningún tipo declarado y genera el mensaje de error: "No se debe acceder a la propiedad escrita antes de la inicialización".

Por ejemplo, considere el siguiente código:

class Foo {
    private string $val;

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

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

Acceder a $val después de construir Foo daría como resultado el error, ya que su tipo aún no está definido (undefinido!== null).

Para resolver esto, asigne valores a todas las propiedades durante construcción o establecer valores predeterminados para ellos:

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

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

Ahora, todas las propiedades tienen valores válidos, lo que elimina el error.

Este problema también puede surgir cuando se depende de los valores de la base de datos para las propiedades de la entidad, como ID generados automáticamente o marcas de tiempo. Para los ID generados automáticamente, declararlos como anulables:

private ?int $id = null;

Para todos los demás, elija los valores predeterminados apropiados que coincidan con sus tipos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3