php 可以调用静态别名吗?

Can php call a static alias?

在 php 中,parent class 中的方法是否可以在实例中使用 child class 中的别名child class?

Parent class:

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

Child class:

use My\Custom\Path\To\Foo;

class ChildClass extends ParentClass
{

}

代码:

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

我希望此代码 return My\Custom\Path\To\Foo() 的新实例而不是 Foo() 的新实例。

我意识到我可以将所需的 Foo 路径存储在 class 属性 中,或者我可以简单地在 child class 中实例化所需的 Foo。但是,考虑到路径已经存储在 child class.

use 语句中,这两个似乎都是多余的

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

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

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

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