для начала ваши языковые значения не должны быть инкапсулированы в вашем объекте реестра.
ваш объект реестра должен содержать только такие объекты, как Session, Language, Input, output и т. Д., Поэтому ваш статический класс должен быть скомпонован так:
abstract class Registry
{
public static function get($key)
{
}
public static function set($key,$object)
{
}
}
затем вы вставляете свои объекты в Реестр следующим образом:
Registry::set("Language", new Language());
Затем вы должны использовать ваш языковой класс для извлечения ваших языковых файлов:
$Language = Registry::get("Language");
$Message = $Language->get("YourMessageKey");
в отношении соглашений об именах, я бы посоветовал вам использовать все строчные буквы и подчеркивания только (это для ясности)
, поэтому следующая строка:
that-error-message-that-appear-when-a-user-is-not-logged-in
станет
that_error_message_that_appear_when_a_user_is_not_logged_in
но это путь к длинному и бессмысленному, что вы должны сделать, чтобы ваш язык был многомерным, чтобы сообщения об ошибках содержались в контексте ошибки.
$Language->errors("user_not_logged_in");
, которая становитсягораздо более читабельный и имеет лучшую производительность, потому что вы разбили бы свой контекст на отдельные файлы, как, например,
/locale/en/primary.php | loaded by default
/locale/en/errors.php
/locale/en/menu.php
/locale/en/user.php
Каждый будет загружен только тогда, когдаПозвонил, например:
$Language->user("welcome_new_user");
/* ^ */
В вашем языковом классе создайте метод вызова, чтобы иметь возможность делать такой выбор:
public function __call($context,$params)
{
if(!$this->contextLoader($context))
{
$this->loadContext($context)
}
return $this->languages[$this->lid][$context][$params[0]];
}
Это сделает вещи намного более управляемыми.
Примечание:
Вымойте свой грязный рот!