Kohana ORM, расширяющий и родительский методы - PullRequest
1 голос
/ 27 мая 2011

Я просто новичок в Kohana ORM, поэтому мой вопрос может быть немного глупым для профессионалов, но ..:)

У меня есть несколько моделей ORM, и у всех них есть несколько одинаковых методов, таких как:

public function items_order_by_id($reverse = false)
{
   if($reverse) return $this->order_by($this->_primary_key, 'desc')->find_all();

   else return $this->order_by($this->_primary_key, 'asc')->find_all(); 
}

OR

public function get_form()
{
    $result = array();

    foreach($this->_table_columns as $key => $value)
    {
        if($value['form']) $result[$key] = $this->_prefix.'_'.$key;
    }

    return $result;
}

Если я добавляю новую модель, я должен скопировать все похожие методы, и если я хочу изменить какой-либо метод, я должен изменить все файлы. Я знаю, что у объектного программирования есть наследование, но когда я пытаюсь расширить Kohana_ORM, я получаю исключение, например:

Свойство comment_id не существует в классе Model_Comment

И всех других качеств тоже не существует

Возможно ли иметь родительскую модель, содержащую эти методы?

Ответы [ 2 ]

0 голосов
/ 27 мая 2011

О, это было определенно глупо. Я только что переопределил функцию построения _ и забыл parent :: _construct ().

Итак, проблема решена, и теперь все в порядке.

Извините за это:)

0 голосов
/ 27 мая 2011

Да, это возможно. Вам просто нужно написать свои функции, чтобы они могли использоваться всеми другими моделями, которые будут расширять его.

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

Также это немного оффтоп, но вы должны взглянуть на AutoModeler. Если вы хотите гибкую модельную систему. https://github.com/zombor/Auto-Modeler

Он имеет примерно те же функции, что и ORM, но значительно упрощает расширение.

...