在Zend Framework中,是否可以为控制器中使用的$ this对象添加功能?
我正在尝试创建一个API,由存储在单独文件夹中的类文件定义。所以希望能够去:
$userDetails = $this->api->user()->getDetails();
这可能吗?
答案 0 :(得分:1)
这只是对对象实例的引用,因此您只需要向相关类添加方法和属性。例如:
class MyController extends Zend_Controller_Action
{
protected $api = null;
public function init()
{
$this->api = new ApiClass();
}
public function indexAction()
{
$this->api->user()->details();
}
}
当然,这可能不是最佳方式。我可能会把api作为bootstrap资源,在这种情况下你会这样做:
class MyController extends Zend_Controller_Action
{
public function indexAction()
{
$this->getApi()->user()->details();
}
public function getApi()
{
return $this->getInvokeArg('bootstrap')->api;
}
}
答案 1 :(得分:1)
在库中创建一个新文件夹,您可以在其中保存自己的类。例如:Sjwdavies
创建一个新文件:Sjwdavies/Controller/Action.php
class Sjwdavies_Controller_Action extends Zend_Controller_Action
{
public $api;
}
您的控制器现在必须扩展此类:
class IndexController extends Sjwdavies_Controller_Action
{
public $api;
}
请务必在application.ini中包含库路径:
includePaths.library = APPLICATION_PATH "../../library"