Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Signatures de constructeur inconsistantes

<?php

declare(strict_types=1);

class x {
    function __toString() : string {
        return "YES";
    }
}

function foo(string $a) {}

// piece of syntax of the day (POSOTD)
echo $x = new x;

print " A $x";

// Fata error: Argument #1 ($a) must be of type string, x given, foo($x);

?>

PHP impose que les méthodes aient la même signature dans une classe parente et dans ses classes enfants. Il lève une erreur fatale si ce n’est pas le cas.

Sauf pour les constructeurs, où les signatures peuvent être différentes.

Cette exception à la règle existe pour des raisons de compatibilité ascendante, car de nombreux codes sources ont des signatures variables dans une hiérarchie de classes.

Pourtant, la POO moderne recommande de synchroniser ces signatures, afin de permettre l’instanciation avec le même ensemble d’arguments.

See Also

PHP Features

Last updated: 11 October 2026