Interface implémentée trop bas
<?php
interface i {
function foo($a);
}
class x {
function foo() {}
}
class y extends x implements i {
function foo($a = 1) { echo __METHOD__; }
}
La signature d’une interface s’applique uniquement à la classe courante et à ses enfants. Cela signifie que le parent n’a pas à utiliser la même signature.
Toutefois, le parent et l’enfant doivent utiliser une signature compatible, indépendamment de l’interface. Et, au final, la signature de l’enfant doit être compatible à la fois avec le parent et avec l’interface. Notez à quel point les méthodes du parent et de l’interface sont différentes, tout en restant compatibles.
Bien qu’il puisse être pratique d’utiliser l’interface sur un seul enfant et non sur ses frères, il serait sans doute moins surprenant d’utiliser l’interface directement sur le parent. À moins qu’il ne possède pas une telle méthode.
See Also
- Interface on a child [Try me]
PHP Features
Last updated: 11 October 2026