Feb 01

Смотрим FAQ в wiki. Наконец-то в CI можно использовать нормальный ORM. :)

written by fxposter \\ tags:


11 Responses to “Doctrine в CodeIgniter”

  1. 1. mihailt Says:

    хмм… надо будет потестить..

  2. 2. MAX Says:

    А поподробней? Что за зверь?

  3. 3. FX Poster Says:

    Можно :)

    Если вкратце – мне известны 2 очень хороших ORM’а, написанных на PHP. Которыми очень удобно пользоваться, которые ведут себя именно так, как ты этого ожидаешь (если ты запросил массив записей из бд – оно тебе и вернет массив ActiveRecord’ов, а не обычный двумерный PHP’шный массив), которые понимают разницу между записью и таблицей (в моделях CI такой разницы нет) и так далее.

    Эти два ORM: Propel и Doctrine. Доктрина удобнее, как по мне, и функциональнее к тому же. В недостатки обоих можно записать “тормознутость”. Но если не делаешь сайт с, например, >100k хитов в сутки – это всё равно не заметишь.

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

  4. 4. MAX Says:

    Как-то очень сложно… Разве Active Record Class в CodeIgniter не подходит?

  5. 5. FX Poster Says:

    Мне – нет. Меня он очень многим не устраивает. :)

  6. 6. Sam Says:

    Ещё один плюсик CI.

  7. 7. BaRoN! Says:

    Идея неплоха, конечно, только сложно как-то все… Если брать ту же Java, и соответственно J2EE – там визуально это все делается и куча кода автогенерируется… И для масштабируемости – распределенные вычисления, на несколько серверов…
    Не подскажете чего-нибудь почитать про doctrine, чтобы сжато и с примерами? :-)

    А хорошее проектирование системы все-таки важнее производительности, при ряде условий: – наличие масштабируемости; – в самых “узких местах” по-моему можно и нужно делать предельно производительно, в ущерб красоте :-)

  8. 8. FX Poster Says:

    Что ты понимаешь под генерацией кода? Доктрина может тебе сгенерировать модель из структуры БД и наоборот. Описывать модель можно как в XML, так и Yaml.

    По поводу документации – официальный сайт. Документация там отличная.

    Насчет красоты – лично я считаю, что ты не прав. Красиво можно и нужно делать всё и всегда. Производительность достигается за счет кеширования всего и вся. А масштабируемость – это уж как повезет, но обычно – за счет продуманной архитектуры как раз масштабируемость и проявляется, а приложения написаные “чтобы было производительно” как раз хрен отмасштабируешь, да и кешировать на этом “низком уровне” сложнее, чем на более высоком.

  9. 9. BaRoN! Says:

    1. Под генерацией кода – именно сгенерировать модель из структуры БД. Видимо, проморгал, будем исправляться.
    2. Лишнего много :-(
    3. Масштабируемость всеж-таки недооценивается только до столкновения с чем-то невообразимым на текущий момент :-) Далее – полностью согласен, именно поэтому хороший код и должен стоять во главе угла – потому что его проще поддерживать. Но если хороший код не удовлетворяет запросам конечных пользователей – то по большму счету грош ему цена… Кэшируемость хорошая вещь, конечно, но:
    * случается, что данные не только читают, но еще и записывают
    * есть необходимость в постоянной валидации кэша, или же пользователь получает потенциально устаревшие данные
    * кэши, особенно в памяти, имеют свойство заполняться и расходовать память неэффективно :-(

    Хотя, конечно, баланс между первым и вторым каждый выбирает для себя сам. Оттого и придумывались разные языки программирования, разные фреймворки, разные базы данных… Можно, например, объектными базами пользоваться – хотя я не сталкивался, но что-то их никто не пользует, а вот ORM как адаптер – используют :-)

  10. 10. FX Poster Says:

    2. На все случаи жизни. Да и вообще – хороший ORM маленьким быть по определению не может. А то, что используется по умолчанию в CI и CakePHP – это просто детский лепет, который вообще юзать невозможно.
    3. Масштабируемость вообще зависит от многих факторов. И я в этот разговор влезать особо не хочу – я никогда не делал сложных, высоконагруженных приложений. И вряд ли в ближайшее время буду. Хотя было бы интересно.

    Так что пока я предпочитаю пользоваться (и изучать) тем, что реально очень удобно для меня. Doctrine входит в список таких “интересных” продуктов.

  11. 11. BaRoN! Says:

    В CI таки да, не вполне комфортно – мышиная возня с написанием аналогичных оберток БД самостоятельно. Напоминает программирование в текстовом редакторе вместо полноценного IDE.
    CakePHP вообще не смотрел даже, не ставилось цели кормить монстров )

    Как Эккеля дочитаете – попробуйте с J2EE поиграться, если интересно еще более всеобъемлющее решение.

Leave a Reply