Yii фреймворк как читается

Обновлено: 06.07.2024

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.

Found a typo or you think this page needs improvement?
Edit it on github !

Yii — это высокоэффективный основанный на компонентной структуре PHP-фреймворк для разработки масштабных веб-приложений. Он позволяет максимально применить концепцию повторного использования кода и может существенно ускорить процесс веб-разработки. Название Yii (произносится как Yee или [ji:]) означает простой (easy), эффективный (efficient) и расширяемый (extensible).

Последные стабильные версии: 1.1.19, 2.0.12

Отличный набор утилит для удобной и быстрой разработки Yii-приложений с помощью Twitter Bootstrap и Yii Boilerplate - YiiBooster(GitHub)
Виджеты для использования Bootstrap(добавлены некоторые от сторонних разработчиков и для CGridView), удобная структура проекта Yii с разделением на фронтенд и бэкенд, совместные папки - время экономится, особенно помогает при прототипировании приложения.Подробности по ссылке YiiBooster site
Кто еще не пробовал - обьязательно попробуйте, не пожалеете!

Максим Пак

Максим Пак запись закреплена

Алексей Ермолаев

Алексей Ермолаев запись закреплена

Виталий Щуканов

Виталий Щуканов запись закреплена

Рынок криптоиндустрии в этом году достигнет 3 трн.
И это все не строки из книг употипчных произведений классиков -
это уже ЗДЕСЬ и СЕЙЧАС, Будущее уже сегодня

Мы Топ команда в СНГ криптотрейдеров и инвесторов:
Показать полностью.
Разбираем самые перспективные криптостартапы.
Анализируем рынок в поисках перспективных криптовалют.
Работаем с иностранными блокчейн проектами.
Помогаем новичкам разобраться в мире блокчейн БЕСПЛАТНО.
Научим как получать награды, за работу для различных криптопроектов со всего мира .
Мы Ваш проводник в финансово-цифровое будущее, ЗДЕСЬ и СЕЙЧАС.

Максим Цвигун запись закреплена

Рынок криптоиндустрии в этом году достигнет 3 трн.
И это все не строки из книг употипчных произведений классиков -
это уже ЗДЕСЬ и СЕЙЧАС, Будущее уже сегодня

Мы Топ команда в СНГ криптотрейдеров и инвесторов:
Показать полностью.
Разбираем самые перспективные криптостартапы.
Анализируем рынок в поисках перспективных криптовалют.
Работаем с иностранными блокчейн проектами.
Помогаем новичкам разобраться в мире блокчейн БЕСПЛАТНО.
Научим как получать награды, за работу для различных криптопроектов со всего мира .
Мы Ваш проводник в финансово-цифровое будущее, ЗДЕСЬ и СЕЙЧАС.

Ольга Теленова

Ольга Теленова запись закреплена

Ищу разработчика PHP (Yii, Laravel)

Никита Романов

Никита Романов запись закреплена

Также в поисках тим-лида, оклад обсуждаем индивидуально.

Заинтересованные - вэлкам в личку, с резюме и вопросами.

Дима Музыкин

Дима Музыкин запись закреплена

Для удобства работы со списками ссылок на различные сайты и их систематизации сотрудниками медиа-службы по рассылке и распространению новостей и пресс-релизов CheapPR необходимо реализовать описанный функционал на базе Yii (с нуля или доработка существующего сайта на Yii 1.1). Дизайн не нужен, чистый Bootstrap. Нам нужно проверить, поможет ли это в нашей работе и насколько это будет эффективно и мы готовы потратить на это деньги.
Показать полностью.

В конце прошлого года SitePoint опубликовал статью, в которой освещались основные фреймворки PHP. Для пятого места было выбрано Yii (произносится Yee ) Framework. В то время самой последней доступной версией фреймворка была 1.1.14. Недавно появился Yii 2.0, так что вы можете начать использовать его в производстве.

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

1. Простота установки

Установка выполняется с помощью Composer . Если вам нужно описание процесса установки, Sitepoint недавно опубликовал отличную статью здесь . Я предпочитаю использовать базовый шаблон приложения, даже если на моем сайте есть отдельный фронтальный и внутренний компоненты. Вместо этого я предпочитаю использовать модуль для серверной части моих сайтов. (Модули Yii лучше всего описать как мини-приложения, которые находятся внутри вашего основного приложения).

Примечание . Многие из ссылок на каталоги в последующих примерах используют структуру каталогов из простого шаблона.

2. Использует современные технологии

Все классы имеют пространство имен, что позволяет вам воспользоваться их автозагрузчиком, совместимым с PSR-4. Это означает, что включение вспомогательного класса HTML Yii так же просто, как:

Yii также позволяет вам определять псевдонимы, чтобы упростить ваши пространства имен. В приведенном выше примере этот оператор use загрузит определение класса, которое по умолчанию находится в каталоге /vendor/yiisoft/yii2/helpers . Этот псевдоним определен в классе BaseYii в строке 79:

Сам фреймворк устанавливается с помощью Composer, как и его расширения. Даже процесс публикации расширений так же прост, как создание собственного composer.json , размещение кода на Github и размещение вашего расширения на Packagist.

3. Высоко Расширяемый

Сначала я бы создал файл в каталоге app\components с именем View.php и добавил следующее:

Затем в моем основном файле макета ( app\views\layouts\main.php ) я добавил бы следующее к тегу body моего HTML:

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

4. Поощряет тестирование

Расширение Codeception упрощает настройку приложения во время тестирования. Просто отредактируйте предоставленный файл /tests/_config.php чтобы настроить тестовое приложение. Например:

Используя эту конфигурацию, произойдет следующее:

  1. Любые электронные письма, отправленные во время ваших функциональных и приемочных тестов, будут записаны в файл, а не отправлены.
  2. URL-адреса в ваших тестах будут иметь формат index.php/controller/action а не /controller/action
  3. Ваши тесты будут использовать вашу тестовую базу данных, а не производственную базу данных.

5. Упрощает безопасность

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

Yii поставляется с компонентом приложения Security, который предоставляет несколько методов, помогающих создать более безопасное приложение. Некоторые из более полезных методов:

  • generatePasswordHash : генерирует безопасный хеш из пароля и случайной соли. Этот метод создает случайную соль для вас, а затем создает хеш из предоставленной строки, используя PHP-функцию crypt .
  • validatePassword : это сопутствующая функция для generatePasswordHash , которая позволяет вам проверить, соответствует ли введенный пользователем пароль вашему сохраненному хешу.
  • generateRandomKey : позволяет создать случайную строку любой длины

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

Предыдущий код говорит DefaultController разрешить гостевым пользователям доступ к login в login и view действия, но не действие create . ( ? это псевдоним для анонимных пользователей, а @ относится к аутентифицированным пользователям).

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

6. Сократить время разработки

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

  • модели
  • Контроллеры
  • формы
  • Модули
  • расширения
  • Действия и представления CRUD-контроллера

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

Это гарантирует, что Gii будет загружаться только тогда, когда для переменной среды Yii задано значение development , и что он будет загружаться только при доступе через localhost.

Теперь давайте посмотрим на модель генератора:

Gii Model Generator

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

Это создаст новый шаблон миграции в / migrations, который выглядит примерно так:

Допустим, я хотел добавить несколько столбцов в эту таблицу. Я бы просто добавил следующее к методу up :

И затем, чтобы убедиться, что я могу отменить миграцию, я бы отредактировал метод down :

Создание таблицы будет просто включать команду в командной строке:

и удалить таблицу:

7. Простота настройки для лучшей производительности

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

Все компоненты кеша Yii вышли из yii / caching / Cache , что позволяет вам выбрать любую систему кеширования, которую вы хотите, используя общий API. Вы даже можете зарегистрировать несколько компонентов кэша одновременно. В настоящее время Yii поддерживает кэширование базы данных и файловой системы, а также APC, Memcache, Redis, WinCache, XCache и Zend Data Cache.

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

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

Затем отредактируйте конфигурацию, чтобы указать, какие инструменты вы хотите использовать для минимизации (например, Closure Compiler, YUI Compressor или UglifyJS). Сгенерированный шаблон конфигурации будет выглядеть так:

Затем выполните эту консольную команду для выполнения сжатия.

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

Примечание: вам придется загрузить и установить эти внешние инструменты вручную.

Вывод

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

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