Yii2 что это такое

Что такое Yii2 фреймворк?

Yii можно использовать для разработки любого вида веб-приложений. Благодаря своей основе компонентов, архитектуре и сложной поддержки кэширования, фреймворк подходит для разработки крупномасштабных проектов, таких как порталы, форумы, системы управления контентом (CMS), систем электронной коммерции, RESTful веб-сервисов и т.д.

Фреймворк Yii включает в себя следующие возможности:

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

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

В настоящее время есть две основные версии фреймворка, которые можно использовать: 1.1 и 2.0. Версия 1.1 является старым поколением и теперь находится в режиме технического обслуживания. Версия 2.0 представляет собой полностью переписанный Yii, с внедренными новейшими технологиями и протоколами, в том числе: Composer, PSR, пространств имен, Traits и т.д.

Версия 2.0 представляет нынешнее поколение фреймворка и будет получать основные усилия в области развития в течение следующих нескольких лет. Для использования Yii 2.0 требует PHP 5.4.0 или выше, а также базовых знаний объектно-ориентированного программирования (ООП).

Установка

Yii 2.0 полностью поддерживает Composer, де-факто менеджер пакетов PHP. Установка ядра фреймворка, а также расширений, обрабатываются с помощью Composer.

Требования PHP

Yii 2.0 требует PHP 5.4 или выше, что является огромным шагом вперед по сравнению с PHP версии 5.2, которая используется в Yii 1.1. В результате, есть много различий на уровне языка. Ниже приводится краткое изложение основных изменений в отношении PHP:

Namespace

Компоненты и объекты

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

Конфигурация объекта

Класс объекта вводит единый способ конфигурирования объектов. Любой потомок класс объекта должен объявить его конструктор (если это необходимо) следующим образом, чтобы он мог быть правильно настроен:

В приведенном выше коде, последний параметр конструктора должен принять массив конфигурации, содержащий пары имя-значение для инициализации свойств в конце конструктора. Вы можете переопределить метод init() для выполнения инициализации работы, которая должна быть сделана после того, как конфигурация была применена.

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

События

В Yii 2, вы можете использовать любое имя события, инициировав событие посредством вызова метода trigger():

Чтобы прикрепить, обработчик к событию, используйте метод on():

Псевдонимы пути

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

Например, yii\caching\FileCache::$cachePath может занять как псеводоним пути, так и нормальный путь к каталогу. Псевдоним пути также тесно связан с классом имен.

Рекомендуется, чтобы псевдоним пути был определен для каждого корневого пространства имен, тем самым позволяя использовать Yii класс автозагрузчика без какой-либо дополнительной конфигурации. Например, поскольку @yii относится к каталогу установки Yii, класс yii\web\Request может автоматически загружается.

Views

Models

Yii 2.0 использует yii\base\Model в качестве базовой модели, а также имеет новый метод scenarios() позволяющий объявлять поддерживаемые сценарии, и указать, в соответствии с каким сценарием производить работу с атрибутами.

В данном примере используется два сценария: backend и frontend. Для сценария backend, атрибуты email и role являются обязательными и могут быть массово присвоены. Для сценария frontend, атрибут email может быть массово присвоен, в то время как role не может. И email и role должны быть проверены с помощью метода rules() используемого для объявления правил проверки.

Controllers

Yii 2.0 использует yii\web\Controller в качестве базового класса контроллера. yii\base\Action является базовым классом для классов действий. Действие в контроллере должно возвращать содержимое:

Widgets

Темы (Themes)

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

Консольные приложения

Перевод сообщений выполняется с помощью компонента приложения i18n. Этот компонент управляет набором источников сообщений, что позволяет использовать различные источники сообщений на основе категорий сообщений.

Фильтры действий (Action Filters)

Assets

Помощники

В Yii 2.0 используются статические вспомогательные классы, например, такие как:

Формы

Построитель запросов (Query Builder)

Yii 2.0 представляет собой запрос БД с точки зрения объекта запроса, который может быть превращен в SQL заявление с помощью QueryBuilder. Например:

Active Record

Источник

Что такое Yii?

Yii – это высокопроизводительный компонентный PHP фреймворк, предназначенный для быстрой разработки современных веб-приложений. Слово Yii (произносится как Йи [ji:] ) в китайском языке означает «простой и эволюционирующий». Также Yii может расшифровываться как акроним Yes It Is!

Для каких задач больше всего подходит Yii? #

Yii – это универсальный фреймворк и может быть задействован во всех типах веб-приложений. Благодаря его компонентной структуре и отличной поддержке кэширования, фреймворк особенно подходит для разработки таких крупных проектов, как порталы, форумы, CMS, магазины или RESTful-приложения.

Сравнение Yii с другими фреймворками #

Если вы уже знакомы с другими фреймворками, вам наверняка будет интересно сравнить их с Yii.

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

Версии Yii #

На данный момент существует две основные ветки Yii: 1.1 и 2.0. Ветка 1.1 является предыдущим поколением и находится в состоянии поддержки. Версия 2.0 – это полностью переписанный Yii, использующий последние технологии и протоколы, такие как Composer, PSR, пространства имен, трейты и многое другое. 2.0 — текущее поколение фреймворка. На этой версии будут сосредоточены основные усилия несколько следующих лет. Данное руководство именно о версии 2.0.

Требования к ПО и знаниям #

Yii 2.0 требует PHP 5.4.0 и выше и наилучшим образом работает на последней версии PHP 7. Чтобы узнать требования для отдельных возможностей, вы можете запустить скрипт проверки требований, который поставляется с каждым релизом фреймворка.

Для разработки на Yii потребуется общее понимание ООП, так как фреймворк полностью следует этой парадигме. Также стоит изучить такие современные возможности PHP как пространства имён и трейты. Понимание этих концепций позволит вам более легко освоиться c Yii 2.0.

Источник

Поговорим о Yii 2

Yii, вероятно, самый популярный PHP фреймворк на просторах СНГ.
Многие годы он был замечательным инструментом и помогал нам зарабатывать на хлеб с маслом.
Но стоит ли начинать на нем новые проекты в 2017-м? Я задумался.

Архитектура фреймворка

Мысленно вернемся в 2014-й.
Ожидание второй версии Yii кажется бесконечно долгим, core-разработчики не называют никаких сроков.
Разработка ведется в закрытом от публики репозитории.

И вот SamDark презентует Yii 2.0:

После трёх лет интенсивной разработки.
Как вы, возможно, уже знаете, Yii 2.0 был переписан с нуля.

Выходит, архитектура закладывалась в 2014 — 3 = 2011-м году. Или раньше?

Взгляните на Component.php из Yii 2
А теперь на CComponent.php из Yii 1
А теперь на TComponent.php из PRADO Framework — дедушки нынешнего Yii. Выглядит знакомо.

Истоки самого же PRADO уходят куда-то во времена расцвета Delphi:

The very original inspiration of PRADO came from Apache Tapestry.
During the design and implementation, Qiang Xue borrowed many ideas from Borland Delphi and Microsoft ASP.NET.
The first version of PRADO came out in June 2004 and was written in PHP 4.

С первой версии нам достались глобальные константы в коде, свой autoloader, своя хитрая система алиасов для файлов и папок.

Ооооок. Просто напоминаю, что сейчас идет вторая половина 2017-го.

Многие классы наследуются от Component, который наследуется от Object, и в котором еще раз переопределяются все магические методы.

Благодаря этому все классы фреймворка из коробки умеют бросать события, подписываться на них, могут содержать т. н. behaviors.
Каждая модель ActiveRecord в вашем приложении неявно наследует 5 классов и реализует 5 интерфесов.
У всех ваших моделей, так называемых «компонентов», «виджетов», контроллеров, логгеров, хелперов, валидаторов — одни и те же предки.
Yii2 что это такое. image loader. Yii2 что это такое фото. Yii2 что это такое-image loader. картинка Yii2 что это такое. картинка image loader

Компоненты, их события, поведения… возможно, они имели смысл в PRADO Framework, где «компонентами» были TButton, TAccordion и все вот это.

Это может свести с ума во время отладки.

Не добавляет радости и тот факт, что любой компонент приложения из любого места можно достать через Yii::$app. Эдакий экземпляр приложения и сервис-локатор в одном лице.

DI-контейнер

В Yii 2 он есть.
В нем нет ни compile-time проверок, ни защиты от circular references, ни тегов (как в Symfony и Laravel), ни Contextual Binding (как в Laravel).
Доступен из любой точки приложения как Yii::$container. Снова.
Внутри Yii 2 собственный контейнер не используется, а все компоненты лежат в Yii::$app, прямо как в первой версии.

Интересный факт: Qiang начал писать Yii 2 в 2011 году, а контейнер был добавлен только три года спустя, между 2.0.0-alpha и 2.0.0-beta.

Active Record

Если оставить в стороне споры Active Record vs Data Mapper, то реализация AR в Yii очень даже ничего.
Удобное и лаконичное API, поддерживаются все популярные СУБД. Есть нормальные миграции из коробки.

Единственный минус вытекает из сильной связанности фреймворка — если ваша бизнес-логика оказалась в AR-моделях, то переиспользовать все это добро можно только в рамках проектов на Yii.

Фронтенд

Тут все плохо.
В Laravel есть Elixir, в Symfony с недавних пор — Webpack encore.
Yii же не просто не помогает с фронтендом, а еще и добавляет головной боли.

Для установки Yii 2 вам нужно в принудительном порядке поставить глобально fxp/composer-asset-plugin, для того, чтобы поставить jQuery c помощью composer-а, для того, чтобы установился Yii.

jQuery входит в обязательные зависимости Yii 2.

Не припоминаю ни одного другого composer-пакета, для установки которого нужно было танцевать с бубном.
В проектах с Yii каждый запуск composer install/update происходит утомительно долго,
т.к. composer каждый раз идет гулять куда-то в глубины репозитория Bower-пакетов.
Еще мне когда-то пришлось откатывать версию composer-а на более старую, из-за несовмесимости с текущей версией fxp/composer-asset-plugin.

В качестве альтернативы предлагается использовать дополнительный composer-репозиторий, который кеширует npm и bower пакеты. Что тоже выглядит немного костыльно.

Если знаете, как поставить Yii без возни с ненужными фронтенд-пакетами — пишите в комментариях.

Все остальные компоненты

Абстракция над HTTP, кеширование, логирование… они есть, и они без проблем выполняют свои задачи.
Конечно же они самобытные, гвоздями прибитые к Yii, и не имплементируют соответствующие им PSR-ы.

Будущее Yii

Скорость развития оставляет желать лучшего

Помните, как долго мы ждали версию 2.0?
А вы знаете, когда выйдет 2.1? Никто не знает.

2.0.x: 222 открытых тикета — No due date.
2.1.0: 58 тикетов — No due date.
2.2.x: 1 тикет — No due date.

Т.е. для 2.1 еще не определена дата релиза, а для 2.2 даже примерный скоуп задач. До третьей версии, о которой еще рано даже начинать говорить, мы вряд ли увидим кардинальные изменения в архитектуре.

Следует признать, что ближайшие конкуренты — Laravel и Symfony — внедряют новые фишки и выпускают версии гораздо резвее. У обоих конкурентов уже есть LTS-версии. Yii 2.1 вроде бы тоже должна иметь long-term support.

Компонентные фреймворки победили

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

Код, написанный на PHP, работает везде, а код, написанный на Yii — только на Yii.
Вы либо ставите на Yii всё, либо ничего. Это риск для долгосрочного проекта.

Конечно, приложив усилия, можно писать framework-agnostic код и разруливать все через DI-контейнер, но это не поощряется.
Если вы все-таки решитесь на это, вам прийдется забыть про Yii-вский ActiveRecord
или начать писать неприлично толстые прослойки между фреймворком и вашей бизнес-логикой.
Но это, мягко говоря, неоправданно.

Если вы наследуете какой-либо класс своего приложения от любого другого класса Yii, без Yii вы его работать не заставите, ведь он обязательно наследует Object или Component. Вот.
Даже если вы вытащите вместе с ним весь ворох родительских классов и реализуемых интерфейсов, это вам не поможет.
С модными нынче DDD и CQRS/Event Sourcing Yii также вам не помощник. Скорее, даже будет вставлять палки в колеса.

Команда фреймворка всё пишет сама. Даже VarDumper они написали свой, а не взяли из компонентов Symfony.
Регулярно поддерживать и улучшать столько компонентов — очень непростая задача для небольшой команды. И у этой команды есть два пути.

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

Во-вторых, можно все-таки разбить монолитный Yii на независимые от фреймворка компоненты.
Но тогда это будет уже не Yii с простым и удобным API, а просто еще один набор компонентов, не востребованный вне экосистемы Yii.

Оба пути ведут в никуда.

PHP 7

Yii 2 без проблем работает под PHP 7+.
Однако чтобы использовать все возможности type-hinting-а, core-разработчикам придется переписать его до неузнаваемости.
Дело в том, что сейчас много методов принимают аргументы нескольких типов:

Таких мест в фреймворке очень много. Кого-то это бесит, кто-то считает это API удобным.
Но если мы хотим использовать тайпхинтинг, все это удобное API превращается в тыкву.

Qiang так и не вернулся

Полтора года назад на форуме Yii подняли интересный вопрос, мол, не забил ли Qiang Xue на свое детище?
Как бы там ни было, с тех пор от него так и не пришло ни одного коммита.

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

Что в итоге

Yii — неплохой инструмент и если вам с ним комфортно — отлично.
В конце-концов, он практичен. Трудно представить задачу, которую невозможно решить, используя Yii.
Еще Yii невероятно популярен в СНГ. Зная его, очень легко найти как работу, так и сотрудников.

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

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

Источник

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

Yii2 что это такое. thumb 0be25a032245f70610966815da440707. Yii2 что это такое фото. Yii2 что это такое-thumb 0be25a032245f70610966815da440707. картинка Yii2 что это такое. картинка thumb 0be25a032245f70610966815da440707

Yii2 что это такое. thumb 0be25a032245f70610966815da440707. Yii2 что это такое фото. Yii2 что это такое-thumb 0be25a032245f70610966815da440707. картинка Yii2 что это такое. картинка thumb 0be25a032245f70610966815da440707

Yii2 что это такое. retina 63621a873677935d52a2bc19cf760d95. Yii2 что это такое фото. Yii2 что это такое-retina 63621a873677935d52a2bc19cf760d95. картинка Yii2 что это такое. картинка retina 63621a873677935d52a2bc19cf760d95

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 популярен за счёт низкого порога вхождения. Чтобы успешно написать свой маленький сайт, здесь нужно освоить:

Чем удобен Yii2

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

Шаблоны yii2

Шаблон basic

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

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

Yii2 что это такое. retina fd4cd0224adbd2f4de41c07886f9a263. Yii2 что это такое фото. Yii2 что это такое-retina fd4cd0224adbd2f4de41c07886f9a263. картинка Yii2 что это такое. картинка retina fd4cd0224adbd2f4de41c07886f9a263

Шаблон advanced

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

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

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

Yii2 что это такое. retina 685d75c7682408720f670b689c7c8c04. Yii2 что это такое фото. Yii2 что это такое-retina 685d75c7682408720f670b689c7c8c04. картинка Yii2 что это такое. картинка retina 685d75c7682408720f670b689c7c8c04

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

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

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

Yii2 что это такое. retina 1ba32c388737f6321814ede26a36444b. Yii2 что это такое фото. Yii2 что это такое-retina 1ba32c388737f6321814ede26a36444b. картинка Yii2 что это такое. картинка retina 1ba32c388737f6321814ede26a36444b

Yii2-debug

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

Yii2 что это такое. retina 2d45fcb173e0f4db772c0c35be40e398. Yii2 что это такое фото. Yii2 что это такое-retina 2d45fcb173e0f4db772c0c35be40e398. картинка Yii2 что это такое. картинка retina 2d45fcb173e0f4db772c0c35be40e398

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

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

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

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

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

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

Что, если не yii2

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

Laravel

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, то вы адаптируетесь к нему без особых проблем.

Yii2 что это такое. retina 63621a873677935d52a2bc19cf760d95. Yii2 что это такое фото. Yii2 что это такое-retina 63621a873677935d52a2bc19cf760d95. картинка Yii2 что это такое. картинка retina 63621a873677935d52a2bc19cf760d95

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 популярен за счёт низкого порога вхождения. Чтобы успешно написать свой маленький сайт, здесь нужно освоить:

Чем удобен Yii2

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

Шаблоны yii2

Шаблон basic

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

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

Yii2 что это такое. retina fd4cd0224adbd2f4de41c07886f9a263. Yii2 что это такое фото. Yii2 что это такое-retina fd4cd0224adbd2f4de41c07886f9a263. картинка Yii2 что это такое. картинка retina fd4cd0224adbd2f4de41c07886f9a263

Шаблон advanced

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

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

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

Yii2 что это такое. retina 685d75c7682408720f670b689c7c8c04. Yii2 что это такое фото. Yii2 что это такое-retina 685d75c7682408720f670b689c7c8c04. картинка Yii2 что это такое. картинка retina 685d75c7682408720f670b689c7c8c04

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

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

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

Yii2 что это такое. retina 1ba32c388737f6321814ede26a36444b. Yii2 что это такое фото. Yii2 что это такое-retina 1ba32c388737f6321814ede26a36444b. картинка Yii2 что это такое. картинка retina 1ba32c388737f6321814ede26a36444b

Yii2-debug

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

Yii2 что это такое. retina 2d45fcb173e0f4db772c0c35be40e398. Yii2 что это такое фото. Yii2 что это такое-retina 2d45fcb173e0f4db772c0c35be40e398. картинка Yii2 что это такое. картинка retina 2d45fcb173e0f4db772c0c35be40e398

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

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

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

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

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

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

Что, если не yii2

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

Laravel

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, то вы адаптируетесь к нему без особых проблем.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *