是的,我知道,这个标题很难理解:)
代码将使这种方式更容易理解:
namespace AbstractLevel;
abstract class Bar
{
public function addFoo(Foo $foo)
{
$this->foo = $foo;
}
}
namespace AbstractLevel'ConcreteLevel;
class Bar extends 'AbstractLevel'Bar
{
public function addFoo(Foo $foo)
{
parent::addFoo($foo);
}
}
当实例化AbstractLevel'ConcreteLevel'Bar
类时,上面的代码应该会收到一个运行时通知,因为addFoo()
方法的类型提示与其同名的父方法不同。
是否有任何方法可以确保AbstractLevel'ConcreteLevel'Bar::addFoo()
类型提示类AbstractLevel'ConcreteLevel'Foo
而不是AbstractLevel'Foo
?
有什么办法可以确保。。。
您可以向typehinded类添加绝对路径:
public function addFoo('AbstractLevel'ConcreteLevel'Foo $foo)
我目前还不能100%确定关键字abstract
,
你可能需要把它放在第一类:
abstract class Bar
{
public abstract function addFoo(Foo $foo)