Геттеры и сеттеры: магия и Yii2
При подготовке вебинара о событиях вспомнил, что в Yii2, в отличие от первой версии, события и поведения на компоненты приложения можно навесить через конфигурационный файл виртуальными свойствами. И я уже давно хотел рассказать о геттерах и сеттерах.
Так что пока провели вебинар по геттерам и сеттерам вообще и рассмотрели использование некоторых магических методов в Yii2: доступ к атрибутам ActiveRecord-модели, компонентам приложения, навешивание поведений и событий через свойства, получение связанных данных из отношений моделей:
Осталось немного рассказать про метод __call
, но это мы сделаем на уроке про поведения. А следующий посвятим событиям в Yii2. Дату сообщу также в рассылке по вебинарам. Запишитесь, если ещё не с нами:
Если вдруг назрели интересные темы для следующих вебинаров, то можете предложить их в комментариях здесь или в первой статье. Спасибо за внимание!
Спасибо за вебинары. Сам еще не смотрел, но думаю что ролик продолжительностью 2,5 часа дает исчерпывающую информацию.
Продолжай в том же духе.
Отличный материал! Спасибо большое!
Правильно ли я понимаю, что в более-менее крупных проектах стоит разделять, например операции входа, регистрации, редактирования пользователя в разные модели? Получается куча тонких моделей, каждая их которых отвечает за свою операцию.
Реквестирую вебинар по RBAC! Очень полезная и сложная тема, особенно учитывая, что это стандарт.
По сути это без разницы. Но мне удобнее сделать отдельную форму, например, для смены пароля, чем таскать всюду одну модель с кучей сценариев.
Классная статья Дмитрий, спасибо.
Я знаю что isset($array[$key]) проверяет, существует ли такой ключ и имеет ли значение или нет.
array_key_exists($key, $array) проверяет, существует ли такой ключ, не смотря на его значение.
Вопрос: Почему в __get функции BaseActiveRecord модели на первом сроке проверяется и то и другое?
Большое спасибо за материал. Очень познавательно, несмотря на некоторую невнятицу в изложении. На мой взгляд, получилось гораздо лучше, чем в курсе по Git/Composer. Хотелось бы посоветовать делать упор не на детали внутренней структуры фреймворка, а на применение рассматриваемого материала на практике, как это сделано в известном челябинском курсе по YII1 или в книге Ларри Ульмана.
Поддерживаю идею проведения вебинара по кэшированию в YII2
Наоборот, делайте упор на внутреннюю структуру фреймворка. Этого как раз не хватает в интернете тем кто не участвует в создании yii2, не читает issue или у кого не очень с английским. Архитектуру фреймворка всеравно надо знать, и гораздо легче самому смотреть код, после просмотра вебинара, когда уже есть примерное представление.
О применении yii2, на мой взгляд, уже достаточно подробно описано в документации и различного рода статьях.
Интересный симинар, поверхностно начал изучать yii, очень полезно для понимания внутренних вещей фреймворка.
Про RBAC хорошо бы послушать
Большое спасибо Дмитрий за вебинары.
Проведите пожалуйста вебинар про RBAC.
Добрый день, Дмитрий!
Переведите пожалуйста, данные вебинары в текстовый вид(в статьи). Не всегда удобно смотреть 2+ часа видео :)
Спасибо!)
Жена уже половину вебинара расшифровала. Так что текст в пути :)
очень интересный вебинар, спасибо. Вроде все понятно, надо просто еще раз все осознать
Заметен прогресс в изложении материала. Так держать! ;) Полезные видео!
(по поводу предложения темы)
Кеширование, настроки кеширования, избирательное кеширование (подключение для этих целей хранилищ). В целом вопросы оптимизации в этом направлении.
П.с.: спасибо за ваш труд! Я подписался на канал, читаю ваши статьи. Круто!
Возможно глупый вопрос, потому, что не знаю: А как на счет статических свойств? Почему их нельзя (не реализовано) через геттеры и сеттеры сделать? Что то в роде:
Цель такова: перед тем как создавать объект необходимо из класса выдрать параметры изображений или еще чего.., что-то сделать, и только потом при определенных условиях создавать экземпляр и манипулировать...
Цель такова: перед тем как создавать объект необходимо из класса выдрать параметры изображений или еще чего.., что-то сделать, и только потом при определенных условиях создавать экземпляр и манипулировать...
А чем здесь Class::$fileParam будет удобнее, чем Class::getFilesParam() ?
Добрый день. Спасибо за интересный вебинар.
Было бы интересно послушать про базовые шаблоны проектирования и solid принципы, а так же применение этого всего в yii2.
В самом фреймворке принципы SOLID редко применяются его авторами, так что исходники Yii2 - не лучший пример. А снаружи они применяются во всех проектах одинаково. Может придумаю что-нибудь на основе прошедшего интенсива по ООП, где мы это на двадцати примерах шесть дней обсуждали.
Дмитрий, очень полезная информация в видео, но:
как именно в фреймворке с помощью Setter сохранить полученную от пользователя структуру (массив, json, html и.п.) в БД, т.е. где именно применяются Setter: view, controller или model?
Здесь
Доброго дня, у меня вопрос в видео (время 35:29) вы говорите о геттерах и сеттерах и предлагаете такую конструкцию, чтоб работали гет и сет свойтсва класса:
странно, без этой конструкции нормально работает просто:
и свойство сетится в класс, не объясните где я ошибаюсь, почему у меня работает?
Это PHP так работает, что позволяет объектам несуществующие свойства присваивать вроде $model->gname = 'Name', автоматически делая их публичными. Но ваши setGname при этом не вызываются.
Хорошо было бы, если бы вы писать конспект к своим длинным видео роликам.
Сами видео хорошие