2010-08-10 55 views
20

我試圖使用名稱空間。我想在一個不同的命名空間中擴展一個類。這個班的名字是一樣的。例如:使用具有相同ClassName的其他名稱空間擴展類

父級:

namespace Base; 

class Section extends Skeleton { 

protected $id; 

protected $title; 

protected $stylesheet; 
} 

兒童:

namespace Base2; 
use \Base\Section; 

class Section 
    extends \Base\Section { 

} 

它是使用學說2和Zend框架的應用程序。 Base/Section使用的Skeleton類只是一個包含魔術方法(__get,_set等)的抽象類。

當我嘗試實例化一個\和Base2 \科類,它拋出一個錯誤:

Fatal error: Cannot declare class Base2\Section because the name is 
already in use in /var/www/test/application/Models/Base2/Section.php 
on line 7 

任何想法的?

+0

有這樣的命名方案是不是有點混淆? – 2010-08-10 13:56:22

+0

是的,但它不是真正的命名方案。只有部分是真實的。命名空間只是隨機的。 – 2010-08-11 06:53:12

+1

@Rene:你確定他們不是_arbitrary_? – 2011-07-06 08:50:22

回答

40

只需使用完全合格的名稱

namespace Base2; 

class Section 
    extends \Base\Section { 
} 

或者走樣

namespace Base2; 
use \Base\Section as BSection; 

class Section 
    extends BSection { 
} 
+0

Thnx,這對我有用! – 2010-08-10 13:03:17

9

當你說

use \Base\Section 

你拉科級到當前範圍而發生衝突時,你想創建一個名爲Section的新類。只是省略使用聲明。

相關問題