То, как вы используете функцию e_
, фактически использует псевдоним. Это хорошо, если вы можете жить с этим. Вам не нужно использовать синглтон для реализации псевдонима:
function e_($text)
{
return $GLOBALS['e_alias']->alias(func_get_args());
}
При настройке слоя вида установите зависимость:
$GLOBALS['e_alias'] = $translate;
В контексте приложения установите глобальную переменную $translate
. Это позволит вам отойти от одиночки (которые являются лжецами), и вам на самом деле нужна только глобальная переменная.
Кроме того, он позволяет тестировать представления с псевдонимом e_
для разных реализаций перевода.
Недостатком является то, что вам нужно управлять списком всех этих специальных глобальных переменных, как вы должны поддерживать для глобальных функций, таких как e_
.
См. Также этот ответ на Получение $this
внутренней функции вопрос.