在試圖與XenForo鬆散耦合我爾康的應用程序,我想與爾康的DI註冊從XenForo_Model_Thread類的方法是這樣的:如何使用Phalcon的DI註冊類方法?
$di->set('forum', function() {
\XenForo_Autoloader::getInstance()->setupAutoloader('../forums/library');
\XenForo_Application::initialize('../forums/library', '../forums', true, array('resetOutputBuffering' => false));
\XenForo_Session::startPublicSession();
$model = \XenForo_Model::create('XenForo_Model_Thread');
$callback = function ($id) use ($model) {
return $model->getThreadsInForum($id);
};
return $callback;
});
我希望能夠調用此方法從我的控制器是這樣的:
$forum = $this->forum(2);
顯然這是行不通的。
但這個工程:
$di->set('forum', function() {
\XenForo_Autoloader::getInstance()->setupAutoloader('../forums/library');
\XenForo_Application::initialize('../forums/library', '../forums', true, array('resetOutputBuffering' => false));
\XenForo_Session::startPublicSession();
$model = \XenForo_Model::create('XenForo_Model_Thread');
return array($model, 'getThreadsInForum');
});
然後,我可以從控制器做到這一點:
$forum = call_user_func($this->forum, 2);
我討厭雖然弄亂我的這個古怪的代碼。有一個更好的方法嗎?
你嘗試'$二>設置( '論壇',函數($ ID){'?我還沒有嘗試過,只是一個想法。 – 2014-10-01 04:41:38
@NikolaosDimopoulos是的,通過PHP拋出錯誤的是「調用未定義的方法論壇()」 – 2014-10-01 04:58:47