Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Дифференциал между Cake и Yii

  • Cake имеет модель для каждого контроллера, где Yii имеет 1 на одно действие. Контроллер не зависит от конкретной модели в Yii
  • В Yii вам необходимо вручную указать ваше представление и модели в каждом действии
  • В связанных с Yii и связанных записях записи не отображаются, если не указано вручную
  • В Yii модель может состоять из двух типов (например, из) модели Active record или модели модели, основанной на том, хотите ли вы сохранить данные или нет.
  • CakePHP применяет соглашение, а yii - гибкость.

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

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

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

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

Как только вы получите свои руки на торт, производство и разработки действительно действительно "RAPID".

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

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

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

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

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

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

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

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

Ответ 7

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

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

"Предположим, что пользователь имеет группу" AndBelongsToMany ". В вашем контроллере задайте в качестве альтернативы опцию множественного числа camelCase (группа → группы или ExtraFunkyModel → extraFunkyModels). В действии контроллера вы должны поставить следующее:.

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

Ответ 8

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