Как лучше организовать архитектуру классов?

Рейтинг: 0Ответов: 1Опубликовано: 04.12.2014

В проекте реализована модель MVC. Сейчас задача стоит в написании класса, который бы определял текущий индекс языка на сайте(_RU, _EN) для реализации мультиязычности.

Мультиязычность в моем случае реализована по принципу выбора страна и подгрузки массива слов по установленному индексу, скажем _RU.

Т.е. в базе данных, во многих таблицах есть колонки, отличные только индексом, например:

CountryName_RU, CountryName_EN

Информация, соответственно, в них на разных языках.

Вопрос вот в чем: лучше написать класс, расширяющий классы моделей, чтобы при составлении запроса подставлялся индекс для конкретного поля, или же просто отдельную библиотеку класс, который реализовать в модели или конкретном методе модели?

Ответы

▲ 1Принят

Ну если следовать тому, что уже есть, можно сделать промежуточный абстрактный класс модели для таблиц, в которых несколько языков MultiLanguageModel например, и в нем определить методы, по хорошему getText() для поля text, но если лениво это делать, то:

function __get($field)
{
    if(!empty($this->result->$field))
        return $this->result->$field;

    $lang = /*определяем как-то язык, например _RU*/
    $fieldLang = $field . $lang
    if(isset($this->result->$fieldLang ))
        return $this->result->$fieldLang;

    throw new ModelFieldException('Поле ' . $field . ' не найдено');
}