Zend Framework - 为$ this添加功能

时间:2012-02-24 15:27:44

标签: zend-framework

在Zend Framework中,是否可以为控制器中使用的$ this对象添加功能?

我正在尝试创建一个API,由存储在单独文件夹中的类文件定义。所以希望能够去:

$userDetails = $this->api->user()->getDetails();

这可能吗?

2 个答案:

答案 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"