7 причин в пользу выбора фреймворка Yii 2.0

0
17359

В понедельник 13 октября состоялся долгожданный релиз популярного php фреймворка Yii 2.0 . Разработчики переписали его заново и дали возможность оценить фреймворк еще до выхода стабильной версии. Теперь вы можете ознакомится с ним и использовать его в своих проектах. Давайте посмотрим почему стоит выбрать именно Yii 2.0 .

7 причин в пользу выбора фреймворка Yii 2.0

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

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

Вся установка осуществляется через Composer , если вы захотите установить дополнительный компонент или модуль, это также можно сделать с помощью Composer. Подробно об установке написано в статье: Как установить Yii 2 через Composer.

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

Yii является полностью объектно-ориентированным фреймворком и использует все преимущества продвинутых PHP функций, такие как: Стандартная библиотека PHP (SPL), Позднее статическое связывание и Анонимные функции.

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

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

3. Гибкость и расширяемость

Yii framework можно легко настроить под свои нужды. Практически каждый компонент фреймворка является расширяемым. Простым примером является добавление и использование уникального значение идентификатора <body> $bodyId . Для этого, нам нужно создать файл View.php в директории app/components и добавить следующий код:

Теперь, чтобы использовать идентификатор, достаточно открыть основной файл макета (app\views\layouts\main.php) и подставить в нужном месте наш метод:

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

 4. Тестирование

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

Расширение Codeception упрощает конфигурацию вашего приложения во время тестов, к примеру:

При использовании данной конфигурации произойдет следующее:

  1. Любые письма отправленные во время тестов, будут записаны в файл и не будут отправляться.
  2. URL адреса при тестах будут иметь вид index.php/controller/action , а не /controller/action .
  3. При тестировании будет использоваться тестовая база данных, а не production DB.

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

 5. Безопасность

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

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

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

Yii автоматически проверяет валидность CSRF токена на всех небезопасных методах HTTP запроса (PUT, POST, DELETE) и будет генерировать и выводить токен при использовании метода ActiveForm::begin() , чтобы создать свой тег формы. Эта функция может быть отредактирована с помощью конфигурационного файла следующим образом:

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

Yii также включает готовые к использованию классы для аутентификации и авторизации пользователей. Авторизация разбивается на два типа: ACF (Фильтры контроля доступа) и RBAC (Контроль доступа на основе ролей).

Самым простым является ACF и его использование реализуется добавлением метода в контроллер:

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

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

6. Сокращаем время на разработку

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

Один из таких инструментов называется «Gii». Gii это веб-инструмент — генератор кода, который позволяет быстро создавать шаблоны кода для:

  • Моделей
  • Контроллеров
  • Форм
  • Модулей
  • Расширений
  • CRUD контроллеров, моделей и видов

Gii легко конфигурируется. Вы можете включить его только тогда, когда он вам нужен, для этого настраиваем конфигурацию:

Этот код гарантирует, что Gii будет запущен только когда окружение будет Enviroment (разработка) и доступ будет запрашиваться локально.

Так выглядит сам генератор Gii:

Поле «Table Name» помогает выбрать таблицу из существующих на текущий момент в базе, тем самым экономя ваше время, а также заполняет остальные поля самостоятельно. Вы можете посмотреть код, который вы получите в итоге, с помощью пред просмотра.

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

Таким образом будет создан шаблон миграции в директории {appdir}/migrations, которая будет выглядеть примерно так:

Теперь, скажем, я собираюсь добавить несколько колонок в таблицу. Я просто добавлю следующее в метод up() :

И на случай, если я захочу выполнить обратную миграцию, я опишу метод down():

Миграция выполнится сразу, как только я выполню команду:

или обратная миграция

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

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

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

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

Наконец, Yii имеет инструмент для минимизации asset’ов фронтовой части сайта. Выполнити команду:

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

Далее запустите эту команду консоли для выполнения минимизации:

Остается указать в конфигурации имя файла, который нужен для использования только что минимизированных частей:

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

Заключение

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

ОСТАВЬТЕ ОТВЕТ

Пожалуйста оставьте комментарий!
Введите ваше имя