2011-08-09 52 views
4

我已經結構:命名空間接口

/VBAL/ 
/VBAL/Interface/ 
/VBAL/Interface/Named.php 
.... 
/VBAL/Component.php 

Component.php:

namespace JV\VBAL; 
class Component implements \JV\VBAL\Interface\Named {} 

Named.php:

namespace JV\VBAL\Interface; 
interface Named {} 

但我有語法錯誤:

Parse error: syntax error, unexpected '{', expecting T_STRING or T_NAMESPACE or T_NS_SEPARATOR

如何調用目錄「名稱空間」或放置文件?

+0

你在尋找'Cascade File System'方法嗎? – yoda

+0

我正在尋找一種將文件放置在php中以獲得最大透明度的方式,對代碼的理解,目錄界面對於接口文件來說更爲合適,但似乎不可能調用命名空間以尋找其他名稱,或者放置文件的方式,例如您如何看待該選項:將文件命名。 php /目錄/ VBAL/Component /(創建Component.php的組件目錄),但是它剝奪了使用這個接口的靈活性,因爲它成爲了Component類的一個優先級。也許有一些方法可以適應文件我不知道 – ajile

+0

檢查這個,可能會給你一些提示:http://kohanaframework.org/3.2/guide/media/kohana/cascading_filesystem.png – yoda

回答

12

Interface是PHP中的保留字。你不能將它用作你的命名空間的一部分。

+0

我知道,但是,如何解決,例如,可能是普遍的可接受的目錄名稱標準... – ajile

+0

當然,這不是PHP 5.3+標準。如果你想要你的名字空間反映你的目錄結構,反之亦然,你不能有稱爲'接口','類','功能'等名稱空間順便說一句:你不能有一個類稱爲'類'或'接口'也是。 – Mchl

+6

順便說一句:一個好的替代名稱是'接口' – Mchl

1

如前所述Interface是保留字,不能用作namepsace的一部分。

兩個很好的替代方案是:

Base - 您可以在其中存儲從中延伸,例如接口,抽象類的許多基類,性狀

Interfaces,但是這一次是在我看來,使用少一點,因爲它是plural形式