Codeigniter – multiply objects

Разговаривая о Codeigniter всплыла такая вещь:

В CI не нравится вот именно такая фишка – делаем load и оно создает один объект этого класса внутри нашего контроллера.

В принципе так оно и есть, но оказывается никто не мешает создавать несколько объектов.

Допустим мы захотели создать несколько объектов нашей модели, что делать? а вот что:


...

// создаём объек модели в супер-объекте

$this->load->model('Our_model');

// создаём ещё один объект модели

$ourmodel = new Our_model;

...

И всё теперь у нас есть два объекта модели к одному обращаемся:


...

$this->our_model->our_method();

...

а к другому:


...

$ourmodel->our_method();

...

точно также можно и c родными классам Codeigniter’a.

А если нам понадобилось извлечь какие-либо данные и супер-объекта для этого используется


...

$obj = & get_instance();

...

Мораль из этой сказки я вынес такую:
Фреймворки – это хорошо, но не нужно забывать о стандартных возможностях языка.

Вот и всё.

4 Ответы в “Codeigniter – multiply objects”


  1. 1 FX Poster Январь 27, 2008 в 11:37 дп

    Ну я знал это. :) Естественно, если обьект создался, то класс подгрузился, а т.к. никаких ограничений на конструкторы в PHP4 нет и в помине – его можно инстанциировать.

    Но… Всё равно бред получается. Если бы load загружала просто класс, а потом мы создавали из него обьекты – было бы логичнее. Да и вообще – система калечная. В кохане лучше. Но с ORM’ом там тоже нелады. :)

  2. 2 mihailt Январь 27, 2008 в 3:45 пп

    Зато заморочек с коммандной строкой нет, насчёт ORM, да согласен полностью, но с ActiveRecord без него не плохо :)

  3. 3 FX Poster Январь 27, 2008 в 4:02 пп

    Понимаешь, когда в AR нет отличий между методами записи и таблицы – это хреновый AR. :)

    Зато заморочек с коммандной строкой нет.
    гм. никаких заморочек. просто удобные шорткаты для частоиспользуемых действий.

  4. 4 mihailt Январь 28, 2008 в 7:13 дп

    Понимаешь, когда в AR нет отличий между методами записи и таблицы – это хреновый AR.

    Ну ты прям как Бориска :D – “Панимаишьь” :D

    Может быть, точнее даже скорее всего, но хз почему многим и мне в том числе удобно её юзать,

    есть кстати на wiki другая имплементация АR.

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

    ну-ну..

    В общем ладно.

    СI, по крайней мере для меня достаточно рульный фреймворк для быстрой разработки.


Ответить