Скажем, у моего босса есть класс и интерфейс:
class HisBar {}
interface HisFooInterface
{
public function doSomethingWithBar(HisBar $bar);
}
и у меня есть собственный класс, который может расширять или не расширять HisBar
class MyBar extends HisBar {}
Я хотел бы сделать это:
interface MyFooInterface extends HisFooInterface
{
public function doSomethingWithBar(MyBar $bar);
}
Но да, я получаю ошибку:
Неустранимая ошибка: объявление MyFooInterface::doSomethingWithBar() должно быть совместимо с HisFooInterface::doSomethingWithBar(HisBar $bar) в path\to\MyFooInterface.php в строке xx
Я имею в виду, что мне нужно использовать экземпляр интерфейса, но с другой подсказкой типа, это вообще возможно? Есть какой-либо способ сделать это ? Как изменить тип аргумента? Спасибо.
HisFooInterface
. Теоретически вы могли бы просто принятьstdClass
или вообще не использовать подсказку типа, но это противоречит цели. - person George Brighton   schedule 18.10.2013no type hint at all
, но все равно. То есть я ничего не могу сделать с таким интерфейсом? подсказка типа делает интерфейс негибким/неизменяемым? - person egig   schedule 18.10.2013