ли тут LSP в TestClass::test?
я думал такой код должен кинуть ошибку, но видимо не указывая тип мы расширяем параметр
abstract class AbstractParams
{
public function foo()
{
echo "foo\n";
}
}
class Params extends AbstractParams
{
public function bar()
{
echo "bar\n";
}
}
interface TestInterface
{
public function test(AbstractParams $params);
}
class TestClass implements TestInterface
{
public function test($params)
{
$params->foo();
$params->bar();
}
}
$test = new TestClass();
$test->test(new Params());
да, нарушен
Обсуждают сегодня