Тайпхинтинг: интерфейс или типы объектов
[Внимание: очень холиварный пост]
внимание вопрос: если тайпхинтинг лишь проверяет тип объекта (точнее - нахождение объекта в иерархии наследования ниже искомого), но не регламентирует протокол общения (интерфейс) - какой смысл в нём?
ps: об интерфейсах я знаю, мне интересно поведение именно приведённого выше кода.
[Внимание: очень холиварный пост]
PHP:
<?php
class a
{
function foo()
{
return 'a::foo()';
}
}
class b extends a
{
function foo($arg)
{
return 'b::foo()';
}
}
function c(a $obj)
{
echo $obj->foo();
}
c(new a());
c(new b());
ps: об интерфейсах я знаю, мне интересно поведение именно приведённого выше кода.
теоретик ооп но твой код нарушает принцип полиморфизма - один интерфейс - разная реализация