在试图与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