El atributo Override

(PHP 8 >= 8.3.0)

Introducción

Este atributo se utiliza para indicar que un método, una propiedad o una constante de clase (incluido un caso de enum) está destinado a sobrescribir un método, una propiedad o una constante de clase de una clase padre o que implementa un método, una propiedad o una constante de clase definido en una interfaz.

Si no existe ningún método, propiedad o constante de clase con el mismo nombre en una clase padre o en una interfaz implementada, se emitirá un error de compilación.

El atributo no puede ser utilizado con el método __construct(), que está excluido de las verificaciones de firma.

Sinopsis de la clase

/* Métodos */
public function __construct()
}

Historial de cambios

Versión Descripción
8.6.0 Override puede ser aplicado a constantes de clase, incluidos los casos de enum.
8.5.0 Override puede ser aplicado a propiedades.

Ejemplos

Ejemplo #1 Uso con métodos

<?php

class Base {
    protected function foo(): void {}
}

final class Extended extends Base {
    #[\Override]
    protected function boo(): void {}
}

?>

Resultado del ejemplo anterior en PHP 8.3 es similar a:

Fatal error: Extended::boo() has #[\Override] attribute, but no matching parent method exists

Ejemplo #2 Uso con propiedades

<?php

class Base {
    protected string $foo;
}

final class Extended extends Base {
    #[\Override]
    protected string $boo;
}

?>

La salida del ejemplo anterior en PHP 8.5 es similar a:

Fatal error: Extended::$boo has #[\Override] attribute, but no matching parent property exists

Ejemplo #3 Uso con constantes de clase

<?php

class Base {
    protected const FOO = 'foo';
}

final class Extended extends Base {
    #[\Override]
    protected const BOO = 'boo';
}

?>

La salida del ejemplo anterior en PHP 8.6 es similar a:

Fatal error: Extended::BOO has #[\Override] attribute, but no matching parent constant exists

Tabla de contenidos

+add a note

User Contributed Notes

There are no user contributed notes for this page.