Приветствие Yii2. Интерактив
С момента предыдущей публикации на сайте прошло два месяца. За это время практически наступило лето, начал набирать обороты мой замороженный с декабря по апрель марафонский контентный проект, изучено много материалов в различных областях знаний. Но главное событие этой весны для некоторых программистов – это выход beta-версии нового Yii 2.0. Это не может не радовать, так как практически на наших глазах произошёл вход Yii в экосистему фреймворков нового поколения.
Из появлявшихся дайджестов можно было изучить нововведения второй версии и со всеми доработками и изменениями. В апреле появился обзор на Habrahabr и был опубликован список новых используемых технологий на сайте Александра Макарова.
Постранства имён, трэйты, Composer, репозитории...
Новые инструменты, новые технологии. За крайние пару лет опробованы, доведены до рабочего состояния и внедрены в процесс разработки десятки систем тестирования, автоматической развёртки, управления версиями и пакетами... Как в старой шутке про нерадивую ученицу: «Почему ты опять не успеваешь по Истории? Мама, когда ты училась, учебник был тоньше!». Так и сейчас: в тренде разработки программных проектов происходит много изменений. Лучшие практики и инструменты портируются на другие языки и постепенно мигрируют из системы в систему. Новичку разобраться в этом может быть довольно-таки сложно.
Для ручной (и менее автоматизированной) работы новичку будет проще взять фреймворк первого поколения (CodeIgniter, Кohana, Yii 1.1.14), чем второго (Yii2, Symfony2, Laravel4 или Zend Framework 2). В первых нет таких «заумных» махинаций с «новомодными штучками», появившимися в PHP с версии 5.3. Но потом всё равно придётся подтягивать уровень. Трудно будет устроиться разработчиком в успешную компанию, не ориентируясь в новшествах языка, фреймворках и в системах автоматизации.

Светлое будущее
Завершая разработку небольшой CRM-системы, могу утешить, что если вы не испробовали вторую версию в своих новых проектах, то можете пока не расстраиваться, так как только немногие расширения с Yii1 переделаны авторами под Yii2. Соответственно, совсем скоро выйдет стабильный релиз и мигрировавших расширений станет больше. Но, с другой стороны, дефицит разработанных конкретно для Yii2 расширений компенсируется огромной коллекцией независимых компонентов, доступных для лёгкой загрузки с помощью Composer.
Пока вас может останавливать официальная незавершённость бета-версии и отсутствие более-менее стабильного релиза. Но если не сложно время от времени уделять некоторые ресурсы на своевременное внесение привок, то это не проблема. А если вы просто не можете «осилить» наплыв незнакомых технологий, то это лишь вопрос времени.
Сейчас активно пишется официальная документация к Yii2, которая вскоре будет переведена на русский язык. Многие пока побаиваются сочинять рецепты (и, тем более, записывать видео), так как не хотят их переделывать после каждого изменения фреймворка. Но это только начало.
А сейчас...
...интерактивный момент. Так как этот сайт во многом посвящён разработке на Yii и достаточно популярен, то нужно определиться с тем, что появится здесь дальше и в каком формате.
Долистайте вниз до формы комментариев и напишите, какие статьи здесь хотите прочесть, какие подкасты услышать, какие видео-уроки увидеть. По фреймворку, по Composer или по Git. Хотите что-то узнать ещё по Yii1 или пора переходить только на уроки по Yii2? В общем, предлагайте всё, что угодно.
P.S. В тему угарная анимация и саундтрэк:
Итак, жду в комментариях. Заранее спасибо за мнения!
Андрей Севастьянов – andrej.in.uaДобрый день, Дмитрий.
Расскажите про новый ActiveRecord во втором Yii. Остались ли прежние проблемы, такие как невозможность сделать нормальные сеттеры/геттеры для атрибутов?
Аркадий> невозможность сделать нормальные сеттеры/геттеры для атрибутов
Можно уточнить, что имеется ввиду?
Андрей Севастьянов – andrej.in.uaНапример.
Есть поле data которое содержит допустим сериализированные данные. Я же хочу получать десериализированные данные (и устанавливать, я вообще не хочу знать что модель с ними делает и как хранит). Я не могу повесить getData/setData.
Все потому что стандартный AR __get сначала проверяет существование значения в массиве атрибутов, потом (!) смотрит есть ли такая колонка и если есть то возвращают null.
https://github.com/yiisoft/yii/blob/1.1.14/framework/db/ar/CActiveRecord.php#L134
Более красивого решения я не придумал чем делать что-то наподобии getSerializedData().
По этой же причине могут возникать забавные ситуации если название связи совпадает с каким либо полем.
АркадийСпасибо за развёрнутый ответ. В самом деле в Yii геттеры так работают, причём не понятно, почему сделано так.
Иногда приходится для подобных задач изменять атрибуты в beforeFind, что совсем не здорово.
Александр КузнецовВообще, ваше красивое решение является официальным.
Про первую версию, я не знаю почему так сделано, а во второй, это связано с так называемыми dirtyAttributes, нужно для того, чтобы не обновлять все поля в БД при запросе.
То есть, во второй версии, вам придется делать так же.
Хоть я и не стороник этой "джавизации" с магическими геттари и сеттерами, но все же, это самое оптимальное решение.
Андрей Севастьянов – andrej.in.uaДля примера как это сделано в laravel 4: http://laravel.ru/docs/v4/eloquent#читатели
Степан – tmake.ruБыло бы интересно глянуть, на вашем примере, полный цикл разработки простейшего блога под Yii2, по аналогии с http://www.yiiframework.ru/doc/blog/ru/start.overview
ДенисЗдравствуйте!
Хотелось бы почитать про RBAC, а точнее про DBManager. Говорят, что будет нативная веб-морда для RBAC. А еще меня опечалила работа с MongoDB. Я в первой версии не работал с ней, сразу во второй начал. Так вот, меня дико огорчило то, что нет в ActiveRecord поддержки вложенных документов.
Alex DСпасибо!
Презентацию "неасилил" ))) вырубил после 2й минуты - это жесть....
Хотелось бы как раз переходную статью для тех, кто сидел на Yii 1.x и знаком с "новомодными технологиями" из общей теории.
Т.е. фреймворк2+Composer+Git для начинающих.
ВикторЗдравствуйте.
Присоединяюсь к предыдущему комменту: "yii2+Composer+Git для начинающих".
Insolita DonnaХотелось бы увидеть боевой практический пример с созданием своих событий и их вызовом, а так же по применению DI
АнтонЕсли вы не знаете что такое DI по сей день, я не знаю что вы делаете в веб-программировании.
Илья – firebrothers.ruСам пишу на Yii1.
Yii 2 еще не трогал, нету просто времени и отпугивает отсутствие релиза.
Интересно как раз узнать про новые плюшки в Yii2, какие всё же реальные улучшения (какие-нибудь не большие примеры).
maleksЯ уже разобрался в принципе с задумкой DI в Yii 2, но вот про использование его элемента Instance так и не вкурил...
Было бы полезным освещение тех вещей, которые присутствуют во фреймворке, но в самой документации или вообще не упоминаются или вскользь.
Я видел там даже какие то моменты с определением языка и т.д.
Akulenokочень бы хотелось чтобы вы закидывали еще статьи по Yii1 , добить уж до конца, осталось чуть чуть, например не затронуты загрузки на сайт, может напишите статью о создание фото-галереи + Ajax upload
Sam MilkinЯ думаю, что изучение Yii 2.0 лучше начать со структуры каталогов приложения. До сих пор не раскрыта тема взаимодействия frontendа и baсkendа. Это будет интересно не только новичкам, но и некоторым профи.
Дмитрий БрусенскийА что там должно взаимодействовать? На то оно и advanced :)
Александр ШиллингСогласен, технологии сегодня развиваются очень быстро и быть в теме довольно сложно. Но если сфокусировать внимания на основных моментах, то это вполне реально.
Дамир – gabdrahimov.ruдобрый день, отличный блог,
запилите плз несколько статей для начинающих, установка, настройка, создание постов, страниц, комментариев, гостевых книг, вопрос-ответ, поиск по сайту, создание админки и т.д. спасибо
maleksСразу что еще заметил - почти не описано как пользоваться хелпером yii\helpers\Security
maleksХотя не... По Security есть в доках какое то описание.
Рамиль – yabbarov.ruОн уже не в helpers :)
YoYoyii2 + Composer + Git
ВасилийНичего страшного в Yii2 нет. Всё очевидно и просто. Есть документация. И к Yii2 стоит относится как к совершено другому фреймворку, тогда и проблем не будет. А то начинают делать как в Yii, в итоге получаете хрень и кучу глупых вопросов.
Владимир – yiif.ruЧего его смотреть, сырой до ужаса, много нужных вещей не работает.
Много чего было переработано так как пару людям не понравилось, а то что большинству было удобно забыли.
Вот запускаешь yii2 и не покидает ощущение что yii2 хотели сделать типа Symfony2 ,когда SF2 уже давно можно использовать в production.
AkulenokКогда уже начнутся статьи по yii2 ? без вас не разобраться
kevin7Добрый вечер, Дмитрий!
Интересует момент прикрутки онлайн платежей (типа robokasa или по-отдельности) к yii1. В просторах инета встречается только один компонент.
Роман БурковськийСпасибо за материал, приводит к размышлениям.
Хотелось бы увидеть статьи на все выше упомянутые темы, но с более конкретными примерами. Это может быть описание применения какого-нибудь базового, часто используемого инструмента в первом поколении Yii, и описание аналогичного процесса, но уже на базе Yii2. Далее - сравнение, анализ, выводы.
Рамиль – yabbarov.ruЗдравствуйте, хотелось бы почитать как подключить эту компоненту https://github.com/yiisoft/yii2/tree/master/extensions/authclient в том числе с VK.
Жека ВатрушковПростейшие уроки по Yii2. Написание блога под Yii2.
Асанов ИльдарПривет. Спасибо за работу. Хотелось бы увидеть статью о том, как правильно организовать сео-оптимизацию на yii2, спасибо.
Дмитрий ЕлисеевПо сути многое как SEO в Yii1, только из явных отличий добавлен уже готовый метод Url::canonical() и для получения маршрута вместо $this->route в представлении нужно явно ссылаться на контроллер как $this->context->route.
Асанов ИльдарСпасибо!
Andrey LКак создать блог на yii2? Хочется почитать такой же туториал как на оф сайте "Building a Blog System Using Yii" только для yii2, и создать блог самостоятельно.
МаксимДобрый день!
Хотелось бы увидеть уроки по реализации ajax фильтра, когда отмечаешь чекбокс и ajax подгружает нужную продукцию. На Yii 1 и 2 =)
Александр ВысидалкоДобрый день! Хотелось бы увидеть уроки по реализации RESTful API в шаблоне advanced как отдельное приложение вроде backend.