Cakephp и Yii: сходство / различия / скорость? - PullRequest
28 голосов
/ 29 ноября 2010

Я программист CakePhp.Я решил попробовать Yii Framework.Я хотел бы узнать, чем CakePhp похож и отличается от Yii.Кроме того, Yii заметно быстрее, чем CakePhp, как они утверждают?

Ответы [ 8 ]

41 голосов
/ 29 ноября 2010

Из личного опыта, есть несколько различий в обеих платформах, особенно в том, как модели обрабатываются в торт против yii.

  • В CakePHP вы не можете использовать композит первичный ключ, это основной сделка для меня. композитный первичный ключ поддерживается в Yii.
  • Cakephp обеспечивает соблюдение соглашения, в то время как yii поддерживает соглашение, вы не обязаны следовать определенному стандарту. Несмотря на то, что принудительное соглашение - хороший способ выстроить хорошую практику программирования, в конце концов, гибкость, которую предложил yii, выигрывает для меня этот раунд.
  • Производительность из коробки, я думаю, у yii есть преимущество, но, как и в случае с настройкой производительности, с правильной конфигурацией кеша и тем, насколько вы осторожны в использовании шаблонов ActiveRecord, они не так уж сильно отличаются друг от друга

В качестве дополнительного примечания, я руководил реализацией веб-приложений как с CakePHP, так и с Yii, и отзывы, которые я получил от команды, заключались в том, что менее опытная команда предпочитает CakePHP, а Yii предпочитает более опытная команда. Делай из того, что хочешь.

16 голосов
/ 30 марта 2012

Старый пост, но я просто добавляю к нему немного опыта.

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

В настоящее время Yii определенно является лидером технологии MVC в PHP.Это фреймворк, с которым может не сравниться никакой другой фреймворк PHP.Лично я был действительно впечатлен "сеткой" ... я думал, что стороне PHP всегда это как-то не хватало :) Это удивительно быстро и подходит широкому кругу разработчиков.

Для CakePHP: я прочитал номерблогов, где люди утверждают и, вероятно, цепляются за "условности" и "строгость" структуры.

Тем не менее, я бы согласился и не согласился.Утверждения, которые обычно делаются, кажутся довольно очевидными, как только вы их освоите.Каждое правило, что торт цитата Силы цитата может быть легко отменено.Самое главное, что люди не замечают, это , почему соглашения навязываются?

Если вы - разработчик, который испытывает большое производственное давление, я бы сказал auto-magic изторт, который работает за кулисами, например получение данных о связанных моделях, сохранение данных о связанных моделях, определение отношений на основе соглашений - это просто потрясающе.

аккуратность, вытекающая из следования этим соглашениям, не можетбыть объясненным здесь, но только опытным

Я также читал много блогов, где я видел жалобы на скорость работы фреймворка.По своему опыту я бы сказал, что вы должны прочитать книгу. Люди определяют количество отношений, Cake по умолчанию выбирает все данные связанных с ними моделей.Вы можете переопределить это поведение и просто получить нужные данные.На самом деле ваше связывание, развяжите ваши модели на лету.Cake также имеет поведение, называемое «содержащийся» для этой цели.

Как только вы получаете в руки торт, производство и разработки становятся действительно «БЫСТРЫМИ».

Кроме того, с CakPHP 2 многое изменилось, оно очень быстрое и даже более масштабируемое.

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

5 голосов
/ 06 мая 2012

Обе платформы очень похожи, но мне нравится Yii, потому что он быстрый, использует ленивую загрузку на моделях, сотни помощников (jQuery Widgets), нет необходимости в XML / YAML, много расширений, генератор кода консоли и Gii, интерфейс администраторабез магии (+ настраиваемый, + контроль), активный форум, полностью и красиво ООП Дизайн, даже система ... и т. д.

Cakephp также очень хорошая структура, мне нравится, что они планируют обучающие курсы.

4 голосов
/ 30 апреля 2012

Прошу не согласиться со всеми этими избивающими Cakephp.Будучи пользователем обеих платформ, если вы знаете, что делаете, Cakephp ОЧЕНЬ гибок, что означает, что они просят людей использовать соглашения, но в той же документации рассказывается, как обойти это.И до сих пор никаких реальных тестов не было предоставлено, так что позор всем вам ...

По моему опыту, мне пришлось настраивать производительность для Cake, а не для Yii, так что я думаю, что не могупокажите сравнение того, как вещи должны работать или как я ожидаю, что вещи будут работать.Кроме того, большинство тестов используют Cakephp и другие фреймворки из коробки, поэтому я ожидаю, что Cakephp будет работать плохо.

4 голосов
/ 03 декабря 2010

Разница между Cake и Yii

  1. Cake имеет модель на контроллер, где Yii имеет 1 на действие, т.е. контроллер не зависит от конкретной модели в Yii
  2. В Yii вы должнывручную указывайте вид и модели в каждом действии
  3. В Yii связанные и связанные записи не выбираются, если не указано вручную
  4. В Yii модель может иметь 2 типа (то есть расширяется от) Модель активной записиили Форма модели, основанная на том, хотите ли вы сохранить данные или нет, соответственно
  5. Cakephp применяет соглашение, в то время как yii - гибкость.
1 голос
/ 15 марта 2013

Я работал с cakephp около 2 лет и почти завершил свой первый в Yii. (Я также провел год в ZendF и ненавидел это) Cakephp хорош для своей строгой системы, но имеет множество ограничений в своей гибкости. Yii на самом деле сделан совершенно так, как я называю «взломай меня». Лучшая особенность в том, что он начинает ваш день с пустого класса Controller, который используется для наследования всех ваших контроллеров. Но вскоре я узнаю, что могу перейти и переопределить стандартные функции yii со специальной областью применения, такой как render. В торт вы не можете сделать много взлома в коде приложения. в конечном итоге вы перейдете в основной каталог для некоторых очень особых случаев (очень плохая идея, когда вы делаете обновление ядра).

Плагины / расширения в yii так легко создать по сравнению с cakephp.

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

Я считаю, что ядро ​​CakePHP достаточно тяжелое, чтобы замедлять работу на сайтах с высоким трафиком. ZendF намного хуже. Yii имеет меньший стек вызовов к моменту вызова действия.

Не существует cakephpt.php, но есть yiit.php (весь каркас в одном файле, только для производственного использования) для предварительной компиляции всего в yii с использованием apc / etc и сохранения нескольких миллисекунд в вызовах открытия системных файлов.

Набор правил URL YII и его обратный алгоритм непобедимы, возможно, для всех других фреймворков в php. IMO yii URL config слишком прост по сравнению с cakephp. и затем, когда вы вызываете createUrl, он начинает создавать точный URL-адрес браузера из той же конфигурации, что приводит к изменению ваших URL-адресов в вашем приложении только с помощью файла конфигурации. если вы решите переместить контроллер / модуль в отдельный (под) домен, просто потребуются изменения конфигурации, код вашего приложения может остаться небрежным.

Способ, которым модели имеют метки атрибутов, правила, которые также могут быть изменены. все методы метода поддерживают свойства get / post - спасатель. тогда правила взаимоотношений также намного лучше, чем те, которые способны в cakephp. проверки и даже необработанный php-код в некоторых правилах обеспечивают большую гибкость.

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

0 голосов
/ 24 июля 2014

Я пытался изучить Cakephp, но документация, хотя и обширная, плоха по своей структуре.Например, в разделе руководства FormHelper, он говорит о параметрах формы, не объясняя, как это работает, только синтаксис, а затем показывает вывод html.Для новичка, как я, я хочу знать синтаксис, но также, куда идут собранные данные формы, как я могу выбрать поля ввода, как я могу направить ввод формы, куда идти, что это значит, что вы«создать контекст формы», что это за контекст и как он используется и т. д.

Что это означает ,

"Предполагая, что у пользователя есть группа AndAlBelongsToManyВ вашем контроллере установите переменную множественного числа camelCase (в данном случае group -> groups или ExtraFunkyModel -> extraFunkyModels) с параметрами выбора. В действии контроллера вы должны указать следующее: ".

Я изучал Codeigniter, и это было настолько интуитивно понятно в его объяснениях, но документация Cakephp, хотя она очень красиво представлена, не объясняет вещи, а читает больше как справочное руководство.В настоящее время я смотрю на Yii, и хотя он более сложный, чем Codeigniter, документация гораздо более информативна и, следовательно, понятнее, чем у Cakephp.

0 голосов
/ 02 марта 2012

Yii лучше для новичка в MVC, но cakephp немного сложен для новичка. Оба - хорошие фреймворки, но в Yii есть больше учебников или документации, доступных в сети.

...