2017-03-09 58 views

回答

1

隱而不宣」指定系統AppController的路徑,公共職能沒有任何意義恕我直言。一個插件是爲了在你的應用程序之外生存。理想情況下,您可以讓插件公開,以便其他開發人員可以在應用程序中使用它。

如果你引用一個函數,你(只有你)在你的AppControll中有你的插件不再是一個插件。

我認爲這是典型的情況下,你應該創建一個組件。把getDbConfig()一個組件內,這樣你既可以從插件和AppController的

1

,但對我的生活中,我無法弄清楚如何指定在插件系統AppController中的路徑,公共職能調用組件AppControllers

閱讀關於php OOP namespace basics。你需要導入和別名類。並從你的AppController繼承。這將使插件依賴於有App命名空間可用,但是,至少我從來沒有見過使用另一個命名空間的CakePHP應用程序。如果是另一個,開發人員仍然可以分叉並使用該分支並對其進行更改。

或者讓相關代碼成爲組件或實用程序類,並檢查插件AppController是否存在該類,然後實例化實用程序li​​b或加載組件。

0

你應該把函數作爲配置參數傳遞給你的插件/組件,或者getDbConfig()的結果(我認爲它不會有太大變化)。

所以:

class MyComponent extends Component 
{ 
    private $dbconfig = null; 

    public function initialize (array $config) 
    { 
    parent::initialize ($config); 
    if (isset ($config['dbconfig'])) 
    { 
     $this->dbconfig = $config['dbconfig']; 
    } 
    } 

}

然後,在你的控制器:

class MyController extends AppController 
{ 
    public function initialize() 
    { 
     parent::initialize(); 
     $this->loadComponent ('My', ['dbconfig' => $this->getDbConfig()]); 
    } 
} 

如果你真的必須引用的函數,並調用它,使用variable functions

相關問題