Я локализую проект, написанный на ZF2. А в некоторых местах ребята используют статические переменные в слое модели.
public function getTransitions()
{
$transitions = array(
static::STATE_NEEDS_REVIEW => 'Needs Review',
static::STATE_NEEDS_REVISION => 'Needs Revision',
static::STATE_ARCHIVED => 'Archive'
);
// some code...
return $transitions;
}
У меня есть пользовательский помощник вида для перевода, который в основном является оболочкой переводчика ZF2 с некоторыми дополнительными функциями. Я знаю, как использовать его в виде слоя и в контроллерах, как это:
$t = $this->getServiceLocator()->get('ViewHelperManager')->get('t');
Но как использовать мой помощник вида в слое модели ???
Если вам нужен доступ к локатору службы в модели, вы можете реализовать ServiceLocatorAwareInterface, как описано в вопросе и ответе здесь:
внедрение ServiceLocator через ServiceLocatorAwareInterface не работает
Тем не менее, я бы предположил, что использование помощника вида в модели может быть неправильным способом. Возможно, вы могли бы взять соответствующую логику из ViewHelper и переместить ее в службу, которую вы можете сделать доступной для класса модели либо путем внедрения, либо просто создавая ее при необходимости. Помощник вида может затем использовать тот же сервис.
Других решений пока нет …