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

Compatibilité mixed

<?php

class x           { function foo(int $a, int ...$args) {} }
class y extends x { function foo(        int ...$args) {} }  // OK! 
//class z extends x { function foo(int $a, int $b, int ...$args) {} } // KO 

class x2            { function foo() {} }
class y2 extends x2 { function foo(mixed ...$args) {} }  // OK! 
//class y22 extends x2 { function foo(mixed $a, mixed ...$args) {} }  // KO

class x4            { function foo($a, $b) {} }
class y4 extends x4 { function foo($b, $c, $d) {} }  // OK! 
//class y22 extends x2 { function foo(mixed $a, mixed ...$args) {} }  // KO

class x3            { function foo(mixed ...$args) {} }
//class y3 extends x3 { function foo() {} }  // KO
//class y32 extends x3 { function foo(mixed $a) {} }  // KOx

class x4            { function foo(int $a, int $b) {} }
class y4 extends x4 { function foo(int $b, int $a) {} }  // KO

La compatibilité de méthodes signifie que les méthodes éponymes doivent avoir le même nombre d’arguments et des types compatibles.

Un cas particulier est l’utilisation du variadique : avec lui, il est autorisé de supprimer des arguments, à condition qu’ils soient du même type et adjacents au variadique.

Avec un variadique mixed, il est également possible de passer de zéro argument à un argument. L’inverse n’est pas possible : on ne peut pas supprimer un mixed ...$args une fois qu’il a été ajouté.

See Also

PHP Error Messages

PHP Features

Last updated: 18 September 2026