2012-08-03 37 views
16

我想知道是否在扩展一个已经'使用'关键字的类来使用特定命名空间的情况下 - 我是否需要在继承类之上添加另一个'use'以使用相同的命名空间?像这样的情况:PHP:扩展类是否需要另一个'use'来调用命名空间?

namespace Core; 

use System\Plugin; 

class Front extends Application { } 
的控制器,它直接调用没有命名空间

,现在(使用完整路径):

use System\Plugin; 

class PageController extends Front { } 

或将不“用”的工作以及与让我使用System \ Plugin命名空间:

class PageController extends Front { } 

回答

18

不,您需要两个文件中的“使用”语句。使用是文件级关键字,不受继承的影响。

请参阅scoping rules for importing以及描述我在手册页底部所说的内容的小方块。

+0

很明显,如果在Front类中,我已经在Plugin命名空间中实例化了一个对象,那么我可以在继承类中不使用“System \ Plugin”的情况下使用它。 – 2012-08-03 11:41:51

+0

当然,你也不总是需要使用声明。使用完全限定名称空间也适用。 – Lusitanian 2012-08-03 11:45:24

+6

如果类可以继承父类的'use'语句,那么它会很好(即DRYer) – hohner 2013-06-26 18:52:06

相关问题