01Что такое Yii 2
Зачем нужен Yii, чем он отличается от других PHP-фреймворков, что нужно знать до старта и как устроен этот курс.
Yii (читается «йи», расшифровывается как Yes It Is) — высокопроизводительный компонентный PHP-фреймворк для быстрой разработки веб-приложений. Ветка 2.0 — полностью переписанный фреймворк на Composer, PSR, пространствах имён и трейтах. Именно о ней весь курс.
Yii в пяти пунктах#
код организован по паттерну «модель–представление–контроллер», а поверх него — приложение, компоненты, модули, фильтры и виджеты.
из коробки есть Active Record для SQL и NoSQL, построитель запросов, миграции, формы и валидация, RBAC, многоуровневое кеширование, REST API, i18n, консоль, тесты.
фреймворк не заставляет плодить абстракции ради «правильных паттернов»: тонкий контроллер, толстая модель, конфигурация массивами.
практически любую часть ядра можно настроить или подменить через конфигурацию и DI-контейнер; готовые расширения ставятся Composer'ом.
одна из главных целей проекта: ленивое создание компонентов, карта классов, кеширование схемы БД, HTTP-кеширование.
Yii подходит для любых веб-проектов, но особенно раскрывается в крупных: порталы, форумы, CMS, интернет-магазины, RESTful-сервисы — там, где важны компонентная структура и кеширование.
Требования и подготовка#
| Что нужно | Зачем |
|---|---|
| PHP 7.4+ (лучше последняя версия) | Yii 2 использует современные возможности языка; для отдельных функций требования выше — их покажет requirements.php |
Расширение PDO и драйвер вашей СУБД (pdo_mysql, pdo_pgsql…) | Любая работа с базой данных |
| Composer | Установка фреймворка, расширений и обновлений одной командой |
| Командная строка | Консольный скрипт yii: миграции, генерация кода, свои команды |
Что стоит знать до старта:
- ООП в PHP: классы, наследование, интерфейсы, пространства имён и трейты — фреймворк целиком построен на них.
- Composer: хотя бы раздел Basic usage его документации.
- Кривая обучения у Yii мягче, чем у большинства PHP-фреймворков: базовое приложение работает сразу после установки, а дальше можно двигаться по темам.
Из чего состоит фреймворк#
Так устроен Yii 2 в общих чертах. Каждый узел — раздел этого курса.
входной скрипт, приложение и его компоненты, контроллеры, модели, представления, модули, фильтры, виджеты, ресурсы, расширения.
жизненный цикл, маршрутизация и ЧПУ, запрос и ответ, сессии и куки, ошибки и логи.
компоненты и свойства, события, поведения, конфигурации и псевдонимы, Service Locator и DI-контейнер.
формы, валидация и все валидаторы; форматирование, провайдеры данных, GridView и другие виджеты.
Экосистема#
- Официальные расширения
yiisoft/yii2-*: debug-панель, Gii, Bootstrap-виджеты, jQuery UI, Redis, MongoDB, Elasticsearch, Sphinx, Swiftmailer, Twig, Smarty, authclient (OAuth), httpclient, imagine, faker, apidoc. Подробнее — в разделе Расширения. - Документация: полное руководство (первоисточник этого курса), справочник классов API, вики-статьи сообщества с готовыми рецептами.
- Сообщество: форум, GitHub yiisoft/yii2, каталог расширений на тысячи пакетов.
Как пользоваться курсом#
- Идите по порядку. Разделы выстроены как курс: сначала установка и первое приложение, затем архитектура, потом БД, формы, безопасность, кеш, REST и инструменты. В конце каждой страницы — ссылка на следующую.
- Ищите по коду. Поиск (Ctrl+K или /) ищет не только по заголовкам, но и по именам классов и методов в примерах:
findOne,AccessControl,Url::to. - Проверяйте себя. Внизу разделов — карточки «вопрос → ответ». Попробуйте ответить, прежде чем раскрывать.
- Отмечайте прогресс. Галочка «Изучено» сохраняется в браузере; на главной видно, что осталось.
- Сверяйтесь с первоисточником. Под каждым разделом перечислены главы руководства, из которых он сжат.
«Йи» ([ji:]). В китайском — «простой и эволюционирующий»; также акроним Yes It Is.
2.0 переписана с нуля: Composer, стандарты PSR, пространства имён, трейты. 1.1 — предыдущее поколение в режиме поддержки.
ООП в PHP (включая пространства имён и трейты), Composer и работу в командной строке.
Крупные: порталы, форумы, CMS, магазины, RESTful-приложения — благодаря компонентной структуре и кешированию.