Yii framework что это

Обновлено: 05.07.2024

От автора: приветствую вас, друзья. В цикле статей мы с вами начнем знакомиться с современным фреймворком Yii. Из данной статьи вы узнаете, что такое Yii и с чего начать его изучение. Вы узнаете о понятии PHP фреймворка, какие бывают фреймворки, а также в чем преимущества работы Yii фреймворка.

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

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

Сегодня можно встретить достаточно большое количество различных PHP фреймворков, например несколько наиболее популярных: Yii, Laravel, CakePHP, Symfony, CodeIgniter и десятки других. В рунете Yii фреймворк является одним из безусловных лидеров.


Фреймворк Yii2. Быстрый старт

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

Как и другие фреймворки, Yii предлагает нам огромное количество дополнительных возможностей, среди которых: безопасность из коробки (валидация и фильтрация данных, защита от SQL-инъекций и XSS), удобная работа с БД, Yii debug и много других плюшек, ускоряющих работу по созданию сайта.

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

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

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

Yii реализует для использования MVC (Model-View-Controller) архитектурный шаблон и способствует организации кода на основе этого шаблона.

Yii является full-stack фреймворком, предоставляя множество проверенных и готовых к использованию функций: построитель запросов и ActiveRecord для реляционных и NoSQL баз данных, RESTful API, поддержку многоуровневого кэширования и т.п.

Yii чрезвычайно расширяемый фреймворк в котором можно заменить почти каждый кусочек кода и разрабатывать нужные расширения.

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

Установка

Установка Yii 2.0, различных расширений и их управление осуществляется с помощью Composer - менеджера пакетов PHP. Однако это также можно сделать и вручную, скачав и распаковав zip архив.

Установка через Composer сводится к вводу самых простых команд через консоль:

Требования PHP

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

  • Namespaces
  • Анонимные функции
  • Короткий синтаксис массива
  • Короткая запись открывающих и закрывающих php тегов
  • SPL классы и интерфейсы.
  • Поздние статические привязки.
  • Дата и время.
  • Traits.
  • intl расширение PHP для интернационализации.

Namespace

В Yii 2.0 используются пространства имен, например, yii\web\Request. Имена присваиваются по структуре каталогов. Допустим, yii\web\Request указывает на то, что файл класса web/Request.php размещается в этом каталоге.

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

Yii 2.0 содержит два основных класса: класса: yii\base\Object и yii\base\Component. Класс объекта это легкий базовый класс, который определяет свойства объекта с помощью геттеров и сеттереров (getters и setters). Компонент класса поддерживает события и поведение.

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

Класс объекта вводит единый способ конфигурирования объектов. Любой потомок класс объекта должен объявить его конструктор:

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

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

События

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

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

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

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

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

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

Views

Объект yii\web\View представляет собой вид части шаблона MVC. Если вы хотите получить доступ к данным контроллера или виджета в представлении, вы можете использовать $this->context .

Для вывода шаблона нужно использовать $this->render() , который возвращает результат рендинга.

Кроме того, в качестве основного языка шаблона, Yii 2.0 также позволяет использовать такие популярные шаблонизаторы как: Smarty и Twig. Для использования этих шаблонизаторов, необходимо настроить компонент представления приложения, установив свойство View::$renderers .

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

Yii 2.0 использует yii\base\Widget в качестве базового класса виджетов. Виджет начинается с методов begin() , and() и widget() следующим образом:

Темы (Themes)

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

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

Консольные приложения организованы как контроллеры, как и веб-приложения. Контроллеры консоли должны проходить от yii\console\Controller . Чтобы выполнить команду консоли, используйте <route> , где <route> обозначает маршрут контроллера (например, sitemap/index). Дополнительные анонимные аргументы передаются в качестве параметров к соответствующему методу действия контроллера, в то время как названные аргументы обрабатываются в соответствии с декларациями в yii\console\Controller::options() .

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

Действия фильтров реализуются с помощью поведения. Новый встраиваемый фильтр определяется с помощью yii\base\ActionFilter . Чтобы использовать фильтр, прикрепите класс фильтра к контроллеру в качестве поведения. Например, чтобы использовать yii\filters\AccessControl фильтр, нужно:

Assets

Представляет собой набор asset bundle файлов (например, файлы JavaScript, CSS файлы, файлы изображений и т.д.) в пределах каталога. Каждый asset bundle представлен как класс, расширяющий yii\web\AssetBundle . Регистрируется asset bundle с помощью yii\web\AssetBundle::register() .

Помощники

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

  • yii\helpers\Html
  • yii\helpers\ArrayHelper
  • yii\helpers\StringHelper
  • yii\helpers\FileHelper
  • yii\helpers\Json

Формы

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

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

Active Record

Yii 2.0 вводит много изменений в Active Record. Два наиболее очевидных из них связаны с построением запросов и реляционной обработкой запросов. Построитель запросов используется с помощью класса yii\db\Query , который наследует все методы построения запросов.

Плюсы и минусы

Плюсы

Минусы

Автор


Программист с образованием в области IT и опытом разработки на разных языках. Автор статей по программированию. Общий опыт работы в сфере IT и интернета более 5 лет.

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

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

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

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

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

  • Как и многие другие PHP фреймворки, для организации кода Yii использует архитектурный паттерн MVC (Model-View-Controller).
  • Yii придерживается философии простого и элегантного кода, не пытаясь усложнять дизайн только ради следования каким-либо шаблонам проектирования.
  • Yii является full-stack фреймворком и включает в себя проверенные и хорошо зарекомендовавшие себя возможности, такие как ActiveRecord для реляционных и NoSQL баз данных, поддержку REST API, многоуровневое кэширование и другие.
  • 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 — это высокоэффективный основанный на компонентной структуре PHP-фреймворк для разработки масштабных веб-приложений. Он позволяет максимально применить концепцию повторного использования кода и может существенно ускорить процесс веб-разработки. Название Yii (произносится как Yee или [ji:]) означает простой (easy), эффективный (efficient) и расширяемый (extensible). Быстрый, безопасный и профессиональный PHP Framework Yii запускает только то, что используется, имеет мощную систему кэширирования и изначально нацелен на отличную работу с AJAX. В Yii есть всё для обеспечения безопасности: валидация, фильтрация, защита от SQL-инъекций и XSS. Yii помогает писать чистый гибкий код. Фреймворк следует MVC и чётко отделяет логику от отображения.

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

С вами Александр Макаров, samdark и этой второй выпуск в этом году. Я попросил членов команды написать что-то для вступления, но, похоже, они предпочитают писать код :)

Это первый выпуск новостей в 2021. Начало года вышло продуктивным. Мы начали активно релизить пакеты Yii 3, есть значительный прогресс с пока не релизнутыми пакетами. Улучшили инструментарий разработки, много всего исправили, убили лишние пакеты. И всё это параллельно с поддержкой Yii 2 и решением проблем с финансированием.

Всем привет! Это последний выпуск новостей в "весёлом" 2020 году. Я едва успел его приготовить потому как скорость разработки Yii 3 сильно подросла. Все пакеты в этом месяце мы тегнуть не успели, но многие почти готовы, поэтому стоит ожидать релизов в Январе.

С наступающим Новым Годом! Пусть будет менее сумасшедшим, чем 2020. - Александр Макаров

// Не забывайте ставить звёздочки любимым пакетам на GitHub.

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

А теперь перейдём к тому, что же интересного случилось с последнего выпуска.

Время очередного выпуска новостей Yii. Как у Yii 2, так и у Yii 3 всё хорошо :)

Наконец, дошли руки обновить страницу с командой на официальном сайте. Константин Сироткин вернулся и активно занимается расширением Yii 2 ElasticSearch. Сформирована основная команда Yii 3. Вообще это по факту произошло в конце 2019-го. Имена, вероятно, вам известны так как упоминались в предыдущих выпусках.

Мы частично переместили тесты на GitHub actions. Полёт прекрасный, рекомендуем. Мы добавляем статический анализ через phan и прогоняем тесты через Infection чтобы ещё больше повысить качество кода.

Я потратил немного времени на YiiPowered, где мы собираем проекты на Yii. Сейчас там 571 проект. Улучшения такие:

  • Можно добавлять проекты на Yii 3.0.
  • Для проектов, для которых не заполнены скриншоты, они делаются и загружаются автоматически каждую ночь.

В прошлом выпуске я упомянул конференцию PHP Russia Online. Прошла она хорошо. Доступны видео.

В качестве эксперимента, я записал скринкаст во время работы над фреймворком. Очень хочется узнать ваше мнение. Стоит писать ещё? Хотите узнать про какую-то часть фреймворка или процесс разработки?

Это второй выпуск новостей, выпущенный на карантине. С прошлого выпуска карантинные меры несколько усилили. Кое-что успело подстроиться и прийти в норму, но много нет. В любом случае, пока, на сколько я знаю, в сообществе Yii все живы и здоровы, так что карантин мы точно переживём и останавливаться не собираемся.

Как многие знают, я собираю конференцию PHP Russia и вирус, конечно же, на неё повлиял. Плохо то, что пришлось её перенести (пока это сентябрь, но как получится на самом деле не знает никто). Хорошая новость в том, что 13 мая состоится бесплатная PHP Russia Online. Заходите, участвуйте. Единственно, необходимо зарегистрироваться заранее. Сам я в этот раз не выступаю, но уверен, что к выходу Yii 3 мы сделаем ещё один YiiConf.

Будьте здоровы и спасибо за поддержку!

С прошлого выпуска прошёл месяц, за который в мире много чего успело поменяться. Прежде всего, из-за вируса. Отменились почти все конференции, сошли на нет путешествия, был введён карантин, работа из дома с детьми 24/7 стала обычным делом. Начал изменяться общий ландшафт IT.

Что осталось неизменным, так это потребность в надёжном и удобном фреймворке для разработки и наше стремление выпустить Yii 3. Я рад, что вы поддерживаете нас несмотря на ситуацию.

Будьте здоровы и приятного чтения.

Этот новостной выпуск было написать довольно трудно. Не потому что не о чем писать, наоборот — Yii 3 улучшается с каждым днём и процесс настолько затягивает, что от него не оторваться :)

Читайте также: