Насколько отличается CakePHP от Ruby on Rails?

Я почти никогда не слышу слова CakePHP, не услышав слово Rails вскоре после этого. Являются ли эти две структуры в основном похожими на основе того, как они соответствуют модели MVC или имеют ли они другие существенные сходства / различия?

Одной из главных достопримечательностей Rails для меня является то, насколько легко это сделать Ajax. Это также верно для CakePHP?

CakePHP похож на дешевый, развращенный Ripoff Rails. Он пытается быть похожим на Rails, не делая ничего из того, что делает Rails отличным. Похоже, это похоже на подобное.

CakePHP имеет помощник Ajax, который делает что-то похожее на вспомогательные методы, связанные с Ajax, в Rails, так что да, в некотором роде, это также верно.

Но CakePHP – это действительно бесполезное упражнение: его авторы написали его, поэтому им не пришлось бы изучать Ruby, хотя изучение Ruby и Rails вместе, вероятно, проще, чем выяснение чудовищного беспорядка, который является CakePHP.

(Это, исходит от кого-то, кто делает CakePHP на своей дневной работе.)


Поскольку y'all спросила, моя самая большая жалоба на CakePHP заключается в том, как ей удается полностью уничтожить удобства объектно-ориентированного программирования: уверен, она реализует шаблон Active Record точно так же, как Rails, но это заставляет вас обходить структуры данных.

Я чувствую, что любой логический человек будет реализовывать ORM, используя ошибки и динамическую загрузку свойств в объекты, что и делает ActiveRecord (библиотека Rails). Вся идея установки переменной-члена называется $recursive чтобы определить, какие отношения для загрузки просто являются некорректными.

Основываясь на PHP, тоже довольно смертельно; вы не можете ничего делать с глобальным состоянием, вы должны зависеть от mod_rewrite , вы платите штраф за запуск при каждом запросе. Конечно, есть оптимизация для любой среды, которую вы используете, но все же. Люди говорят, что Ruby работает медленно, но мои собственные приложения Rails работают быстрее, чем их эквиваленты CakePHP, последний раз я проверял. Я признаю, что у меня нет данных об этом.

Хуже всего, ошибки в CakePHP просто убивают его для меня. Я мог бы рассказать о нескольких историях о

  • время, которое мы провели два дня, выяснив, почему CakePHP отказался подключиться к правильному узлу базы данных
  • время, в течение которого половина наших страниц была пустым из-за того, что потолок памяти не использовался слишком много компонентов
  • количество кода, которое живет в нашем AppController, потому что каждая загрузка компонента стоит нескольких мегабайт памяти
  • черное искусство массирования структур данных для правильной работы XML-вывода
  • как мы проследили пустой <javascript> который отображается в конце каждой страницы

Торт выложен так же, как Rails, и, очевидно, он получает от него много вдохновения и идей. Торт – отличное введение в рамки MVC, и рельсы кажутся довольно простыми, исходя из опыта пирога.

Ajax очень просто с Cake с помощью JS-помощника. На самом деле все очень просто. Его отличная структура, особенно для распределенных приложений (например, cms) или любой другой ситуации, когда легкость размещения php-приложения является преимуществом.

Я бы увидел основные преимущества рельсов, которые были Ruby (и, следовательно, лучшая реализация OO рельсов и т. Д.) И сообщество. Драгоценные камни (гораздо меньше / меньше комплексных плагинов для торта), учебные материалы в Интернете, книги (красноречивые рубины?)? Группы встреч и т. Д.

Я не работал с CakePHP, но мое впечатление от него не слишком хорошо. Если вы используете Rails-подобную структуру для PHP, я думаю, вам может быть лучше смотреть в Symfony . Наверное, это немного сложнее начать, но весь проект выглядит намного лучше, чем CakePHP.

Конечно, возьмите с солью, потому что эти вещи весьма субъективны.

Я пытаюсь решить, использовать Ruby on Rails или PHP для проекта веб-приложения. У меня нет предыдущего опыта.

Я ценю один из них, а другой – язык, поэтому я рассматриваю CakePHP.

Так сложно получить объективную информацию. Тем не менее, Стивен Д Робинсон сделал отличную презентацию, сравнив эти две очень нейтральным образом.

Крис

Возвращающийся программист