Symfony2 або yii2 який php фреймворк вибрати, блог

Symfony2 або yii2 який php фреймворк вибрати, блог

Намагатися порівнювати технології, у кожної з яких є велика кількість шанувальників - справа невдячна. Завжди є шанс щось упустити, особливо, якщо для себе вже вибір зробив. Тому в цій статті ми спробуємо неупереджено розібратися, чим все-таки відрізняються Symfony2 і Yii2, залишаючи остаточний вибір фреймворку нашим читачам.

Що вибрати: Symfony2 vs Yii2

Symfony2 і Yii2 є PHP-фрейморкамі повного стека. Вони обидва мають відкритий вихідний код, який лежить на Github. Документація по обидва фреймворками доступна як англійською, так і російською мовами. При цьому в Yii2 додатки організовані відповідно до MVC, а в Symfony2 присутній тільки модель і контролер. У Yii2, також як і в Symfony2, використовується простір імен, завдяки чому компоненти, віджети і моделі ізольовані один від одного. При такій організації структури проекту код писати набагато простіше, ніж в першій версії Yii.

Що потрібно зробити, щоб почати роботу з кожним з фреймворків?

Фреймворк Yii2 можна встановити двома способами: за допомогою Composer або вручну. Розробники рекомендують вибирати перший спосіб, воно і зрозуміло, адже в майбутньому нам доведеться ставити розширення або оновлювати фреймворк, що набагато зручніше робити, виконавши пару команд в Composer.

Ці ж два способи доступні і для Symfony2. Розробники рекомендують використовувати інсталятор, щоб прискорити процес створення програми. Але при бажанні можна використовувати і Composer, як у випадку з Yii2.

Після установки Yii2 ви отримаєте веб-додаток, зроблене на шаблоні basic, але є також варіант установки без нього або з шаблоном advanced. Є можливість створити і власний шаблон. У Symfony2 також передбачено демо, але встановлювати його потрібно окремої командної.

Однак у Symfony2 є цікава можливість встановлювати різні дістрібьюшин, заточені під створення того чи іншого функціоналу, наприклад:

  1. Standard Edition встановлюється за умовчанням.
  2. Hello World Edition слід використовувати для створення бенчмарков.
  3. Symfony CMF Standard Edition підійде для створення CMS.
  4. Symfony REST Edition має необхідний REST-функціонал.

Symfony2 або yii2 який php фреймворк вибрати, блог

процес розробки

PHP-фреймворки створені для того, щоб знизити необхідність в повторюваних завданнях. Yii2 завойовує велику популярність, ніж Symfony2, коли мова заходить про процес розробки, адже він значно скорочує саме час розробки. У підсумку ви витрачаєте набагато менше часу на повторювані завдання, і продуктивну частину часу проводите за кастомизацией свого веб-додатки.

У Yii2 присутній модуль для генерації коду під назвою Gii. Він є візуальним, запускається в браузері і дозволяє зручно генерувати такі елементи:

  • класи Active Record;
  • форми;
  • контролери та подання для CRUD;
  • нові класи контролерів;
  • «Скелети» для модулів і файли для розширень Yii2.

Якщо ж вам до душі командний рядок, то ласкаво просимо в Symfony2. Тут за генерацію «скелетів» для бандлів, форм і CRUD-контролерів відповідає SensioGeneratorBundle.

Що стосується роутінга, то у Symfony2 тут більше можливостей, наприклад гнучке налаштування імпортованих Рауса. а також кастомизация Рауса за допомогою умов.

Потрібно відзначити, що Yii2 поставляється разом з Bootstrap і надає готові віджети і стилі. Symfony2 ж ніяк не полегшує працю frontend'щіков, і стилі потрібно підключати самому. Також в Symfony2 немає вбудованих віджетів.

продуктивність

Дані бенчмарка php-framework-benchmark (Symfony 2.7.7 і Yii 2.0.6):

  • кількість запитів в секунду для Symfony2 склало 101,99, для Yii2 - 379,77;
  • пікове використання пам'яті для Symfony2 склало 3,21, для Yii2 - 1.37.

Таким чином, Yii2 показує кращі результати, ніж Symfony2. Розробники Yii2 деклаліруют. що досягнення високої продуктивності завжди є головною метою фреймворка. Проте, згідно з даними сайту BuiltWith. як Yii2, так і Symfony2 використовуються в великих проектах:

Ми використовували Symfony2 для багатьох своїх проектів - від сервісу для моніторингу якості доріг до сайту для фотографів - і можемо з упевненістю сказати, що нам подобається працювати з ним на великих проектах. До речі, раніше ми вже ділилися деякими хитрощами щодо поліпшення продуктивності проекту на Symfony2 c Doctrine2 ORM.

Symfony2 або yii2 який php фреймворк вибрати, блог

Можливості для розширення

  1. FOSUserBundle - використовується для управління користувачами (відправки даних про них в БД і отримання відомостей з неї).
  2. FOSRestBundle - надає кошти для побудови REST-додатків.
  3. KnpMenuBundle - дозволяє створювати об'єктно-орієнтовані меню.
  4. StofDoctrineExtensionsBundle - використовується для інтеграції в проект розширень DoctrineExtensions.
  5. LiipImagineBundle - надає можливості для маніпуляції зображеннями за допомогою бібліотеки Imagine.

Що використовується в Yii2 для виконання цих функцій?

  1. Для управління користувачами - розширення yii2-user-management. Для REST - розширення yii2-rest.
  2. Для створення меню - віджет Menu (yii \ widgets \ Menu).
  3. Для роботи з базами даних - ActiveRecord ORM.
  4. Для використання бібліотеки Imagine - розширення yii2-imagine.

Як Yii2, так і Symfony2 дозволяють використовувати в проектах бібліотеки сторонніх виробників. Для цього потрібно встановити їх за допомогою Composer, налаштувати і прописати їх в autoloader.

тестування

Symfony2 інтегрований з бібліотекою PHPUnit. Тести повинні знаходитися в піддиректорії бандла, який вони будуть тестувати. Якщо дотримуватися цього принципу, то всі тести проекту можна виконати за допомогою цієї команди:

Yii2 інтегрований з Codeception, який знадобитися встановити глобально і виконати деякі настройки. Після цього тести можна буде запускати з папки / var / www / yii2 / basic / tests /. Щоб виконати приймальне тестування в будь-якому з фреймворків знадобитися використовувати Codeception. Існує також варіант підключення Codeception до Symfony2. Для проведення приймального тестування можна спробувати використовувати зв'язку PHPUnit з Selenium.

Слід зауважити, що для спрощення тестування в Yii2 потрібно користуватися впровадженням залежностей. На практиці це означає, що неспецифічні об'єкти додатка слід виділяти в доменний шар, а код, який відповідає за надання служб, - в компоненти програми (які є чимось на зразок глобальних змінних). Однак нюанс полягає в тому, що клас служби повинен наслідувати yii-клас і через це служби з одного проекту можна використовувати в іншому. У Symfony2 такої вимоги немає.

Symfony2 або yii2 який php фреймворк вибрати, блог

Який фреймворк вибрати: Symfony2 або Yii2? Висновки і спостереження

Відповіді на питання «Що краще: Symfony2 або Yii2»? не існує. Що ж стосується того, який фреймворк вибрати: Symfony2 або Yii2, то, за нашими спостереженнями, вимальовується наступна картина:

Yii2 люблять за простоту і швидкодія, а також повноцінне використання MVC-архітектури. Часто відзначають легкість освоєння API. До недоліків Yii2 відносять не надто потужний роутинг і наявність великого кількість віджетів, на налаштування та вивчення яких може йти багато часу.

Серед переваг Symfony2 - гнучке налаштування роутінга, вбудоване кешування, а також використання шаблонізатора Twig (але існує спосіб використовувати Twig і в Yii2). До недоліків зазвичай зараховують наявність великої кількості сутностей. Аннотаціонний синтаксис також не всім до душі.

Зручністю установки, використанням простору імен, легкістю тестування і великою кількістю розширень можуть похвалитися обидва розглянутих фреймворка. Але все-таки кращий спосіб зрозуміти, що підійде особисто вам, це встановити Symfony2 і Yii2 і спробувати написати свій перший додаток.

Схожі статті