2013-12-17 67 views
1

我有一個Phalcon項目建立,我有一個多個控制器目錄的工作實現。我的當前目錄結構簡單,看起來像這樣:在Phalcon中嵌入控制器目錄與共同的基本控制器

/controllers 
    /admin 
     ControllerBase.php 
     IndexController.php 
    AuthController.php 
    ControllerBase.php 
    IndexController.php 

得到這個工作,我註冊了兩個命名空間:

$loader->registerNamespaces(
    array(
     'App\Controllers' => APP_PATH .'/controllers/', 
     'App\Controllers\Admin' => APP_PATH .'/controllers/admin/', 
     ... 
    )); 

在這個作品中,以下兩個問題創造了大量的應用程序時,應當出示自己與多個目錄:

  1. 我需要爲/控制器內的每個子目錄註冊一個單獨的命名空間。這會對10個以上的命名空間造成任何性能問題嗎?
  2. 對於所有名稱空間控制器,我不能擁有1個通用ControllerBase。不管子目錄/名稱空間是否從一個主控制器繼承,是否有任何方法可用於我的所有控制器?

我遇到的主要問題是#2,似乎不管我嘗試了什麼,我不能讓/admin/IndexController.php繼承自/ControllerBase.php。它只會允許我從/admin/ControllerBase.php繼承。

+1

#2問題不應該發生。我有多個命名空間(多路徑)和許多從一個ControllerBase(沒有命名空間)繼承的控制器(有或沒有命名空間)。所以這是可行的。至於PHP能夠加載你的類,你應該只能有一個ControllerBase – jodator

+0

謝謝jodator。如果你想提交這個答案,我可以接受它。這裏的解決方案是從'ControllerBase.php'中刪除命名空間並調用'$ loader-> registerClasses('ControllerBase'=> PATH);' –

+0

當然,爲什麼不呢?我很高興它幫助你。 – jodator

回答

0

因爲它似乎工作:

我有多個命名空間(多路徑)和許多控制器(帶或不帶命名空間)從一個ControllerBase(沒有命名空間)繼承。所以這是可行的。

到目前爲止,PHP可以加載你的類,你應該只能有一個ControllerBase