PHP:扩展类是不是需要另一个“使用”来调用命名空间?
Posted
技术标签:
【中文标题】PHP:扩展类是不是需要另一个“使用”来调用命名空间?【英文标题】:PHP : Does extending class need another 'use' to call namespace?PHP:扩展类是否需要另一个“使用”来调用命名空间? 【发布时间】:2012-08-01 10:53:23 【问题描述】:我想知道在我扩展一个上面已经有'use'关键字的类以使用特定命名空间的情况下 - 我是否需要在继承类之上添加另一个'use'才能使用相同的命名空间?像这样的情况:
namespace Core;
use System\Plugin;
class Front extends Application
现在在Controller中,直接调用,没有命名空间(使用完整路径):
use System\Plugin;
class PageController extends Front
或者它是否也可以在没有“使用”的情况下工作并允许我使用 System\Plugin 命名空间:
class PageController extends Front
?
【问题讨论】:
【参考方案1】:不,您需要在两个文件中都使用“use”语句。使用是文件级关键字,不受继承影响。
请参阅scoping rules for importing 和手册页底部描述我所说内容的小方框。
【讨论】:
显然,如果在 Front 类中我已经从 Plugin 命名空间中实例化了一个对象,那么我可以在没有继承类中的“use System\Plugin”的情况下使用它。 当然,您也不一定总是需要 use 语句。使用完全限定的命名空间也可以。 如果类可以从父类继承use
语句会很好(即 DRYer)以上是关于PHP:扩展类是不是需要另一个“使用”来调用命名空间?的主要内容,如果未能解决你的问题,请参考以下文章