Что такое yii2 и стоит ли его выбирать

Что такое yii2 и стоит ли его выбирать

Разбираемся в структуре PHP-фреймворка, анализируем преимущества и недостатки
6 минут1902

Yii2 — объектно-ориентированный компонентный фреймворк для PHP, реализующий парадигму MVC (Model-View-Controller). Yii является акронимом от “Yes It is”, на русском пишется и читается как “йии”. Yii2 является второй версией фреймворка Yii. Забегая вперёд, замечу, что Yii3 ждет релиза в 2020 году. 

Немного истории

Свою историю Yii начал 1 января 2008 года. Это был проект по исправлению некоторых изъянов фреймворка PRADO (PHP Rapid Application Development Object-oriented). В свою очередь, PRADO был попыткой перенести ASP.NET на PHP. Затем Цян Суэ понял, что PHP-фреймворк должен быть устроен немного по-другому и спустя 10 месяцев закрытой разработки вышла первая альфа-версия. Релиз Yii 1.0 состоялся 3 декабря 2008.

Вторая версия Yii под номером 2.0.0 увидела свет 12 октября 2014 года, эта дата считается датой релиза. 

Что нужно знать

Yii2 популярен за счёт низкого порога вхождения. Чтобы успешно написать свой маленький сайт, здесь нужно освоить:

  • PHP — на уровне новичка. Достаточно знать немного о классах, наследованиях, немного о методах. Например, я сначала познакомился с Yii1, а только потом с PHP. Да, Yii очень прост в начале освоения. 
  • jquery - базовые основы. Нет, я не опечатался, именно jquery, с учётом того, что yii2 вышел в свет в октябре 2014 года, тогда jQuery был очень популярным. jQuery встроен в Yii2.
  • HTML + CSS. Yii2 подразумевает написание веб-сайта, HTML+CSS — это то, что оформит внешний вид вашего сайта. В Yii2 также встроена поддержка фреймворка Bootstrap, поэтому с отрисовкой симпатичных элементов страницы проблем не будет.  
  • Важно понимать следующее: после получения запроса от клиента, сервер выдаёт ответ обратно и ждёт нового запроса, уничтожая всё, что хранилось в оперативной памяти для формирования ответа.

Чем удобен Yii2

Yii2 создавался будто бы для разработчиков с небольшим опытом. Создатели его побеспокоились о том, чтобы понять базовые принципы работы было максимально просто. В Yii2 существует два заготовленных шаблона: Advanced и Basic.

Шаблоны yii2

Шаблон basic

Basic — простой шаблон, удобен для совсем небольших проектов, таких как блог или информационный сайт. Шаблон оснащён заготовкой из нескольких динамически генерируемых страниц, код которых разделен согласно парадигме MVC. Кстати, парадигма эта подробно рассматривается на курсе архитектуры веб-приложений. 

Также в шаблоне присутствует заготовка для реализации консольных запросов. Структура директорий следующая:  

Шаблон advanced

Шаблон advanced состоит из четырёх базовых компонентов. Три из них можно назвать полноценными приложениями. 

  • Backend — приложение в котором принято описывать логику бэк-офиса. Например, админку для интернет-магазина.
  • Frontend — приложение для «лицевой части», например, витрина интернет-магазина. 
  • Common — компонент, реализующий связку между Backend и Frontend.
  • Console — приложение для запуска консольных скриптов. Необходимая вещица сегодня, поскольку консольный компонент позволяет выполнять долгие задачи в фоне. 

Приложения Backend и Frontend можно располагать как на разных доменах (admin-example.com и example.com), так и на одном домене, но в разных уровнях (admin.example.com и example.com). Получается что, имея один шаблон, вы получаете два сайта, логически разделённых между собой, но имеющих общее в компоненте common. Это удобно для использования в проектах любой сложности.

Ниже представлена структура директорий шаблона advanced

Полезные фишки Yii2

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

Gii

Gii — простой веб-инструмент для  генерации кода. Подсказывает новичку, как нужно располагать файлы. Очень удобен для генерации однотипных страниц, которые в дальнейшем легко переделать под то, что нужно разработчику. Выглядит gii следующим образом:

Yii2-debug

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

Как видно на скриншоте, мы можем заглянуть в различные разделы работающего приложения. Можем посмотреть очередь запросов в БД, различные логи и события, узнать информацию об аутентифицированном пользователе, посмотреть поток загрузки приложения — и это ещё не всё. Очень важно отключать yii2-debug на продакшене, либо включать его только для определённых ip-адресов. yii2-debug демонстрируют очень важную техническую информацию, которую нельзя показывать посетителям сайта. 

Сильные и слабые стороны 

Как и любая сущность на планете, yii2 имеет свои слабые и сильные стороны. Рассмотрим наиболее яркие из них.

Сильные стороны

  • Фреймворк прост в понимании. 
  • Легко адаптируется под большие и маленькие проекты.
  • Имеет большое количество решений рутинных задач из коробки. К примеру, шаблон advanced  обладает механизмом авторизации и аутентификации. Это довольно нужный механизм и он не очень прост в реализации.
  • Имеет замечательную документацию, гайды по старту и различные рецепты.
  • Yii2 популярен и довольно стар (релиз-то был аж в 2014 году), поэтому на рынке в много вакансий yii2-разработчиков, а с помощью развитого сообщества ответы на 90% вопросов вы найдете при легком гуглеже.
  • С помощью шаблонов и gii фреймворк подсказывает начинающему разработчику, как правильно располагать файлы. Сначала разработчик начинает повторять за тем, как это сделано в фреймворке, а потом понимает почему это хорошо. Разработчики фреймворка будто делятся опытом с новичком.

Слабые стороны

  • Наличие различных антипаттернов в проекте — например, одиночка или божественный объект. 
  • Встроенный класс User, являющийся потомком от ActiveRecord, показывает, как делать не нужно. Учит начинающих программистов, что классы, наследуемые от ActiveRecord, нужно раздувать различными методами, не связанными с работой с БД. 
  • Сильная связность модулей в приложении. Говорят, эта проблема в Yii3 будет решена
  • Медленное развитие. 

Каждый, кто работал с yii2 может назвать другие сильные и слабые стороны, но я хочу выделить именно эти. Из-за низкого порога входа приходится мириться со слабыми сторонами. Yii2 действительно хорош, чтобы с него начать свою карьеру. Наличие антипаттернов оправдано, когда речь идёт о простоте использования и поддержания. 

Что, если не yii2

Yii2 — не единственный фреймворк для PHP. Сейчас популярны и другие:

Laravel

Laravel - основной конкурент, альтернатива yii2 на российском рынке труда. Laravel активнее развивается. Обладает своими плюсами и минусами. Может покрывать те же потребности, что и yii2. С Laravel можно познакомиться, обучаясь профессии PHP-разработчик

Yii3

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

  • поддержка различных СУБД Redis, MongoDB;
  • оформление кода по PSR;
  • использование версионирования SemVer;
  • DDD-совместимость;
  • отделение консоли от веба;
  • разбиение на части, которые можно использовать отдельно;
  • строгая типизация;
  • SOLID;
  • убийство иерархии классов;
  • убийство большинства wrapper-расширений;
  • отказ от нестандартных объектов;
  • Swoole / RoadRunner.

Symfony

Symfony — более низкоуровневый фреймоврк. В отличии Yii2 или Laravel, Symfony не является RAD-фреймворком. Для комфортного использования Symfony нужно хорошо знать PHP, понимать и уметь применять принципы SOLID, обладать сравнительно большим опытом.

Symfony подходит для написания проектов любой сложности, но предпочтительно его выбирать для проектов высокой сложности и большого объёма. 

Нужно понимать, что все возможности перечисленных фреймворков ограничены возможностями PHP. Один и тот же сайт можно написать как на Symfony, так и на Yii2 или Laravel. Разница будет в количестве труда, затраченного на написание/поддержку (читай, в бюджете).

Вместо резюме

Я очень люблю Yii2, 90% моих проектов было написано на Yii2/Yii. Yii2 — действительно быстрый, безопасный и лёгкий в понимании фреймворк, но, к сожалению, скорость развития всего проекта Yii как такового оставляет желать лучшего. У разработчиков грандиозные идеи для Yii3, но Laravel развивается куда быстрее. А сейчас, как говорил Кролик из «Алисы в стране чудес», приходится бежать со всех ног, чтобы только остаться на том же месте. Если хочешь попасть в другое место, тогда нужно бежать по меньшей мере вдвое быстрее!

Было время, когда Yii2 был самым востребованным PHP-фреймворком в России. Как сейчас обстоят с этим дела, не знаю, но догадываюсь, что Laravel скоро отберёт пальму первенства по востребованности, если уже не отобрал. Мы в GeekBrains уже не преподаём Yii2, но на факультете веб-разработки вы сможете обучиться навыкам работы с Laravel. И если после этого вам придётся работать с Yii2, то вы адаптируетесь к нему без особых проблем.

Осень — отличное время, чтобы построить далеко идущие планы и начать идти к новым целям! Если вы хотите освоить профессию мечты, то с 1 по 11 октября 2020 г. мы дарим вам скидку 40% почти на все программы обучения GeekBrains. Успехов! :)

 

программированиеweb
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!
Posts popup