Но мне также интересно, что сказал Джастин, что у меня может быть общий помощник расширенного представления? Чтобы все мои представления или контроллеры могли получить доступ для выполнения повторяющихся задач, таких как некоторые HTML-элементы / стили и т. Д. ... Как бы я мог настроить это?
В ответах вы задаете этот дополнительный вопрос. Мой ответ тоже касается этого.
Сначала вам нужно спросить себя, почему вы хотите иметь несколько вспомогательных функций в одном классе
Одна из причин в том, что вы сохраняете дополнительные классы и файлы включений. Как ты мог это сделать?
Если они связаны, вы можете поместить их в один помощник вида. Но не делай такие вещи, как
$this->htmlWrapper()->wrapParapgraph()->wrapContentBox()
->translateFromTo('NL', 'EN');
translateFromTo(…)
не имеет ничего общего с html-упаковкой.
Если вы хотите оптимизировать ваши включения, вы можете поместить общий вспомогательный код в производный класс View:
class MyView extends Zend_View
{
function wrapParagraph() {}
function otherFunction() {}
}
Эта опция также упоминается в руководстве Zend Framework как средство оптимизации.
Обратите внимание, что возможность повторного использования помощника вида не зависит от выбора помощников вида в качестве отдельных классов. Вы автоматически получаете доступ к текущему виду объекта, если ваш помощник расширяет Zend_View_Helper_Abstract
.
class My_View_Helper extends Zend_View_Helper_Abstract
{
function wrapParagraph($content) {
// do something …
return $this->someOtherViewHelper();
}
}
Далее вы написали
$ formVars = $ this-> formVars ();
На самом деле это не имеет смысла, так как Zend_View
регистрирует только один помощник вида на один момент просмотра.
$formVars=$this->formVars();
$formVars->doOneThing();
$formVars->doSecondThing();
эквивалентно
$this->formVars()->doOneThing();
$this->formVars()->doSecondThing();
Аспект Singleton оказывает серьезное влияние на то, как вы проектируете представления помощников, как видите.