PHP:继承类需要另一个'use'来调用命名空间吗?

21

我想知道在我扩展一个已经使用了特定命名空间的类的情况下,是否需要在继承的类上面再添加另一个 'use' 来使用相同的命名空间?就像这样的情况:

namespace Core;

use System\Plugin;

class Front extends Application { }

现在在控制器中,直接使用完整路径而不是命名空间进行调用:

use System\Plugin;

class PageController extends Front { }

如果我不使用 'use',那么它是否也可以工作并让我使用 System\Plugin 命名空间:

class PageController extends Front { }

1个回答

26
不,您需要在两个文件中都使用“use”语句。Use是一个文件级别的关键字,不会受到继承的影响。
请参阅导入作用域规则以及手册页面底部描述我所说内容的小框框。

显然,如果在Front类中实例化了Plugin命名空间中的对象,则可以在继承类中使用它,而无需使用'use System\Plugin'。 - Spencer Mark
当然,并且你也不总是需要使用 use 语句。使用完全限定的命名空间同样有效。 - Lusitanian
9
如果类能够从父类继承 use 声明,会更好(即更加DRY)。 - hohner

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接