MNcVh0Z

Начало

Вторая версия отличается от первой кардинально. Список в краткой форме:

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

— Базовый CComponent разделили на Object и Component. Первый осуществляет работу геттеров и сеттеров, второй расширяя первый, добавляя события и поведения.

— Видоизменилось подключение событий и поведений. Подписываемся на событие

Настраиваем компонент

— Добавили новый класс View, теперь у нас настоящий MVC фреймворк. Представление

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

— render() контроллера больше ничего не выводит. Оно возвращает данные

— В контроллере появились два события, на котрые можно подписываться: beforeAction, afterAction

— Убраны фильтры контроллера CFilter, теперь все делается через поведения

— В контроллере появился отличный помощник — метод populate

— Добавлены еще несколько статических классов-хелперов: ArrayHelper, StringHelper, SecurityHelper. Все хелперы теперь можно перекрыть через LSB. Ура, воскликнул я, т.к лично мне не раз нужно было перекрытьHtml.

— Виджет ActiveForm тоже переписан, и скорее всего заменит форм-билдер CForm. Каждое поле формы теперь может быть представлено как объект ActiveField, который создает ActiveForm

* Внимание: в Html::tag($tag, $content, $options) — изменили порядок параметров!

ActiveRecord

«По большей части, ActiveRecord осталась нетронутой»

— написано в предыдущей статье. Верно подмечено — не трогали.
Просто взяли и написали совсем другой ActiveRecord.

— Забываем про model()

— Убран CDbCriteria. Но не пугайтесь, работа с базой стала от этого легче. Появился ActiveQuery, который представляет себя гибрид CActiveFinder и CDbCriteria.

— Все общие методы теперь статические: getDb, tableName, find*, saveAll*, primaryKey. Выигрыш очевиден.

— Связи, куда же без них. Теперь связи определяются добавлением геттеров

— Для удобства работы со связями добавили link() и unlink(), который автоматически расставят ключи
— Именованные группы условий есть, но в другом виде. У нас же нет больше CDbCriteria, а значит и массивов условий тоже больше нет. Теперь это методы, причем статические, добавляющие условия в Query
  • Отсутствие обратной совместимости с Yii 1.1;
  • Пересмотрена архитектура классов, некоторые их реализации;
  • Отсутствие, как следствие новой архитектуры, некоторых сущностей, например: CDbCriteria, CClientScriptCUserIdentity и другие;
  • Поддержка шаблонизаторов Smarty и Twig.
Namespace
Псевдонимы путей
Компонент и объект
  • \yii\base\Object – легковесный класс, реализующий определение атрибутов класса через методы получение (set) и установки (get);
  • \yii\base\Component – является расширением вышеуказанного, который поддерживает дополнительно события (event) и поведения (behavior).
Консольные приложения

Yii 2.0 активно развивается