Zend Framework - добавьте функциональность к этому - PullRequest
0 голосов
/ 24 февраля 2012

Можно ли в Zend Framework добавить функциональность к объекту $ this, используемому в контроллере?

Я пытаюсь создать API, определяемый файлами классов, которые хранятся в отдельной папке. Так что хотелось бы иметь возможность поехать:

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

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Создайте новую папку в вашей библиотеке, где вы можете сохранить свои собственные классы. Например: 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"
1 голос
/ 24 февраля 2012

Это просто ссылка на экземпляр объекта, поэтому вам просто нужно добавить методы и свойства к рассматриваемому классу. Например:

class MyController extends Zend_Controller_Action
{
   protected $api = null;

   public function init()
   {
      $this->api = new ApiClass();
   }

   public function indexAction()
   {
      $this->api->user()->details();
   }


}

Конечно, это, вероятно, не лучший способ сделать это. Я бы, вероятно, поставил API в качестве ресурса начальной загрузки, и в этом случае вы бы сделали:

class MyController extends Zend_Controller_Action
{

   public function indexAction()
   {
      $this->getApi()->user()->details();
   }

   public function getApi()
   {
      return $this->getInvokeArg('bootstrap')->api;
   } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...