Контент


Jelly_Model: методы set() и load_values()

В Jelly есть метод set(), а есть load_values(). Оба они позволяют разом загрузить в модель значения из массива, например $user->set($_POST) или $user->load_values($_POST). Казалось бы, зачем два разных метода для одного и того же? Фишка в том, что метод load_values() устанавливает значения как изначальные (т.е. используется свойство $_original), как если бы эти данные были загружены из БД. Соответственно последующая попытка сохранить модель ни к чему не приведет, так как свойства $_saved и $_loaded равны TRUE, а $_changed (в котором хранятся измененные поля модели) пустое. Вывод один — используйте set(), если только Вы не загружаете данные откуда-нибудь из кэша.

Google Bookmarks Digg Reddit del.icio.us Ma.gnolia Technorati Slashdot Yahoo My Web News2.ru БобрДобр.ru RUmarkz Ваау! Memori.ru rucity.com МоёМесто.ru Mister Wong

Опубликовано в Kohana3.


Комментарии (4)

Будьте в курсе обсуждения, подпишитесь на RSS ленту комментариев к этой записи.

  1. Corp пишет:

    Скажите, пожалуйста, как у джели с производительностью? Шустрее или медленее родной орм?

  2. Boffin пишет:

    Интересная ORM — надо как-нибудь попробывать. Спасибо.

    Скажите, а почему Jelly не следует стандартным конвенциям в кохана и называется class Jelly_Model, а не class Model_Jelly (или просто Jelly, на худой конец) и как её в этом случае автолоадер находит?

  3. biakaveron пишет:

    @Corp
    Тут в комментах писали, что помедленнее, да это как бы и логичнее — штатный ORM достаточно простой и прямолинейный. Надо бы попробовать накатать тестовое приложение для замеров производительности различных ORM’ов для стандартных ситуаций…

  4. biakaveron пишет:

    @Boffin
    Если на то пошло, то и в ORM главный класс называется просто ORM, а не Model_ORM. Тут можно спорить, но сам по себе класс Jelly_Model можно называть не моделью, а библиотекой, т.к. он непосредственно с БД не работает. Стандартный класс Model в ko3 тоже лежит в classes, а не в classes/model. Так что тут все ОК. А автолоадеру никто ведь не указывает, что искомый класс должен быть моделью или контроллером — он это понимает на основании парсинга имени класса. Т.е. controller_site_admin будет разыскиваться в classes/controller/site/admin.php, а Jelly_Core_Model в classes/jelly/core/model.php.



Можно включить подсветку кода: <code><pre lang="">...</pre></code>
Разрешены некоторые HTML теги

или используйте trackback.