0

在 php 中,父类中的方法是否可以在子类的实例中使用子类中的别名?

父类:

class ParentClass
{
    public function getNewFoo()
    {
        return new Foo();
    }
}

儿童班:

use My\Custom\Path\To\Foo;

class ChildClass extends ParentClass
{

}

代码:

$child = new ChildClass();
return $child->getNewFoo();

我希望这段代码返回一个新实例My\Custom\Path\To\Foo()而不是一个新实例Foo()

我意识到我可以将所需的 Foo 路径存储在类属性中,或者我可以简单地在子类中实例化所需的 Foo 。use但是,考虑到路径已经存储在子类的语句中,这两者似乎都是多余的。

4

1 回答 1

1

你在这里问了很多 PHP。它应该知道您的use陈述将影响完全不同的类,完全不同的文件中的某些内容,只是因为?

如果 PHP 在默认情况下这样做,它会给人们带来很多非常奇怪的问题。重新定义该方法,或者正如您指出的那样,将该属性存储在类本身中。

我认为很多开发人员会期望,或者至少更喜欢 PHP 的行为方式。

听起来您在这里需要的是一个工厂函数,它可以在子类中重新定义以表现不同,或者换句话说,getNewFoo()应该在子类中重写以使用替代版本。

于 2020-02-23T19:04:30.927 回答