Cakephp и Yii: сходства/различия / скорость?

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

8 ответов


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

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

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


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

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

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

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

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

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

аккуратность, которая приходит от следования этим конвенциям, не может быть объяснена здесь, а только испытана.

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

Как только вы получите ваши руки установленные на торте, продукция и развития по-настоящему "быстрый".

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

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


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

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


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

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


разница между тортом и Yii

  1. торт имеет модель на контроллер, где как Yii имеет 1 за действие i.E контроллер не зависит от конкретной модели в Yii
  2. в Yii вы должны вручную указать свой вид и модели в каждом действии
  3. в Yii связанные и связанные записи не извлекаются, если не указано вручную
  4. в Yii модель может быть 2 типа(i.e) модель активной записи или модель формы на основе того, хотите ли вы сохранять данные или нет соответственно
  5. Cakephp обеспечивает соблюдение Конвенции, а yii-гибкость.

Я работал с cakephp около 2 лет и почти завершил свой первый в Yii. (Я также провел год в ZendF и ненавидел его) Cakephp был хорош для своей строгой системы, но имел много ограничений для своей гибкости. Yii на самом деле идеально сделано так, как я называю "hack me". Лучшая особенность заключается в том, что он начинает свой день с пустого класса контроллера, который используется для наследования всех ваших контроллеров. Но вскоре я узнаю, что могу прыгать и переопределять стандартные функции yii со специальным приложением широкий диапазон, как рендеринг. В cake вы не можете много взломать код приложения. в конечном итоге вы перейдете в core directory для некоторых очень особых случаев (очень плохая идея, когда вы делаете обновление ядра).

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

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

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

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

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

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

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


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

что это значит,

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

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


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