Геттеры и сеттеры: магия и Yii2

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

Так что пока провели вебинар по геттерам и сеттерам вообще и рассмотрели использование некоторых магических методов в Yii2: доступ к атрибутам ActiveRecord-модели, компонентам приложения, навешивание поведений и событий через свойства, получение связанных данных из отношений моделей:

Осталось немного рассказать про метод __call, но это мы сделаем на уроке про поведения. А следующий посвятим событиям в Yii2. Дату сообщу также в рассылке по вебинарам. Запишитесь, если ещё не с нами:

Если вдруг назрели интересные темы для следующих вебинаров, то можете предложить их в комментариях здесь или в первой статье. Спасибо за внимание!

Другие статьи

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

Давным-давно была опубликована статья про события в Yii. В дополнение на этот раз попробовали выполнить несколько примеров в прямом эфире. Начали с событий в JavaScript, пощёлкали по кнопкам, потом перешли в PHP и изучили принципы объявления, навешивания обработчиков и запуска события в Yii2 Framework.

Поговорили о том, что же такое фреймворк, из чего он состоит, что за зверь этот Web-MVC и как он облегчает жизнь. Это нам как раз пригодится при изучении остальных тем. А ещё немного порассуждали о других фреймворках в блоке ответов на вопросы.

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

Комментарии

 

Дмитрий

Спасибо за вебинары. Сам еще не смотрел, но думаю что ролик продолжительностью 2,5 часа дает исчерпывающую информацию.
Продолжай в том же духе.

Ответить

 

Даниил

Отличный материал! Спасибо большое!

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

Реквестирую вебинар по RBAC! Очень полезная и сложная тема, особенно учитывая, что это стандарт.

Ответить

 

Дмитрий Елисеев

По сути это без разницы. Но мне удобнее сделать отдельную форму, например, для смены пароля, чем таскать всюду одну модель с кучей сценариев.

Ответить

 

Папин

Классная статья Дмитрий, спасибо.

Я знаю что isset($array[$key]) проверяет, существует ли такой ключ и имеет ли значение или нет.
array_key_exists($key, $array) проверяет, существует ли такой ключ, не смотря на его значение.

Вопрос: Почему в __get функции BaseActiveRecord модели на первом сроке проверяется и то и другое?

if (isset($this->_attributes[$name]) || array_key_exists($name, $this->_attributes)) {...}
Ответить

 

Виктор

Большое спасибо за материал. Очень познавательно, несмотря на некоторую невнятицу в изложении. На мой взгляд, получилось гораздо лучше, чем в курсе по Git/Composer. Хотелось бы посоветовать делать упор не на детали внутренней структуры фреймворка, а на применение рассматриваемого материала на практике, как это сделано в известном челябинском курсе по YII1 или в книге Ларри Ульмана.
Поддерживаю идею проведения вебинара по кэшированию в YII2

Ответить

 

Uterm

Наоборот, делайте упор на внутреннюю структуру фреймворка. Этого как раз не хватает в интернете тем кто не участвует в создании yii2, не читает issue или у кого не очень с английским. Архитектуру фреймворка всеравно надо знать, и гораздо легче самому смотреть код, после просмотра вебинара, когда уже есть примерное представление.

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

Ответить

 

minority

Интересный симинар, поверхностно начал изучать yii, очень полезно для понимания внутренних вещей фреймворка.

Ответить

 

l-dar

Про RBAC хорошо бы послушать

Ответить

 

Александр

Большое спасибо Дмитрий за вебинары.
Проведите пожалуйста вебинар про RBAC.

Ответить

 

Sergey

Добрый день, Дмитрий!

Переведите пожалуйста, данные вебинары в текстовый вид(в статьи). Не всегда удобно смотреть 2+ часа видео :)
Спасибо!)

Ответить

 

Дмитрий Елисеев

Жена уже половину вебинара расшифровала. Так что текст в пути :)

Ответить

 

Andrewkha

очень интересный вебинар, спасибо. Вроде все понятно, надо просто еще раз все осознать

Ответить

 

Spirit Absolute

Заметен прогресс в изложении материала. Так держать! ;) Полезные видео!

Ответить

 

Иосиф

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

П.с.: спасибо за ваш труд! Я подписался на канал, читаю ваши статьи. Круто!

Ответить

 

Максим

Возможно глупый вопрос, потому, что не знаю: А как на счет статических свойств? Почему их нельзя (не реализовано) через геттеры и сеттеры сделать? Что то в роде:

public static function getFilesParam() {
    return [
        'full' => ['width' => 800, 'height' => 600],
        'icon' => ['width' => 100, 'height' => 100],
    ]
}

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

Ответить

 

Максим

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

Ответить

 

Дмитрий Елисеев

А чем здесь Class::$fileParam будет удобнее, чем Class::getFilesParam() ?

Ответить

 

Дмитрий Медведев

Добрый день. Спасибо за интересный вебинар.
Было бы интересно послушать про базовые шаблоны проектирования и solid принципы, а так же применение этого всего в yii2.

Ответить

 

Дмитрий Елисеев

В самом фреймворке принципы SOLID редко применяются его авторами, так что исходники Yii2 - не лучший пример. А снаружи они применяются во всех проектах одинаково. Может придумаю что-нибудь на основе прошедшего интенсива по ООП, где мы это на двадцати примерах шесть дней обсуждали.

Ответить

 

Александр

Дмитрий, очень полезная информация в видео, но:
как именно в фреймворке с помощью Setter сохранить полученную от пользователя структуру (массив, json, html и.п.) в БД, т.е. где именно применяются Setter: view, controller или model?

Ответить

 

Дмитрий Елисеев
Ответить

Оставить комментарий

Войти | Завести аккаунт


(никто не увидит)



Можно использовать теги <p> <ul> <li> <b> <i> <a> <pre>