CakeFest 2025 Madrid: The Official CakePHP Conference

O atributo Override

(PHP 8 >= 8.3.0)

Introdução

Este atributo é usado para indicar que um método se destina a substituir um método de uma classe superior ou que ele implementa um método definido em uma interface.

Se nenhum método com o mesmo nome existir em uma classe superior ou em uma interface implementada, um erro será emitido no momento da compilação.

Resumo da classe

final class Override {
/* Métodos */
public __construct()
}

Exemplos

<?php

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

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

?>

A saída do exemplo acima no PHP 8.3 é semelhante a:

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

Índice

adicione uma nota

Notas Enviadas por Usuários (em inglês) 1 note

up
0
alxrie at gmail dot com
4 days ago
The magic method __construct() can't be marked with Override attribute.

For example:

class Base {
public $val;
public function __construct() {
$this->val = 0;
}
}

class Derived extends Base {
#[\Override]
public function __construct() {
parent::__construct();
++$this->val;
}
}

In PHP 8.3 this example raises an error message

Fatal error: Derived::__construct() has #[\Override] attribute, but no matching parent method exists
To Top