Официальный блог
При входе в чужой проект (или при доработке своего старого) часто сталкиваемся с отсутствием хоть каких-то автоматических тестов. А без них весьма неприятно ковыряться в исходниках, так как есть постоянный страх что-то сломать. Поэтому первым делом приходится внедрять автотесты. Посмотрим, чем Gii может нам помочь.
Многие через обратную связь просят их обучить какому-нибудь фреймворку, мотивируя это тем, что хотят перейти на новый уровень разработки. Но после собеседования часто оказывается, что они работали только с самописным кодом или с процедурными CMS, где толком не встречались с объектно-ориентированным подходом.
Сначала хотел провести вебинар по связям ActiveRecord-моделей в Yii2 на основе урока о теории баз данных, осветив несколько тем из документации. Но получилась бы куча «воды» без практики. Так что решил показать на примере разработки каталога для интернет-магазина из реальной жизни.
В прошлой части мы написали удобный гибридный AuthManager, который можем захотеть использовать в других проектах. Да и в обратную связь поступало много вопросов, как подготовить какой-нибудь компонент для совместного использования в разных приложениях. Так что попробуем сделать полноценное переносимое расширение, которое выгрузим на GitHub и опубликуем для подключения через Composer.
Недавно мы переработали модульную структуру нашего сервиса. А нас уже есть модуль администрирования, который необходимо закрыть от посторонних глаз. Вдальнейшем мы будем добавлять новые ограничения для разных пользователей, поэтому пришла пора добавить контроль доступа на основе ролей.
К предыдущей философской статье об организации более-менее независимой структуры модулей появился комментарий вопросом о том, возможно ли оставить каждый модуль независимым, если между ними всё-таки нужно организовать какое-либо взаимодействие. Предположим, что у нас имеются несколько модулей с моделями, которые мы написали сами или подключили чужие.
В предыдущем рефакторинге мы начали перемещать переводы и конфигурацию в модули. Осталось сделать ещё одну вещь, незаметную снаружи, но очень важную для структуры приложения. А именно, довести разбивку на модули до логического завершения.
Мы разбили проект на модули и сделали управление пользователями, так что некий каркас приложения у нас готов. Пора приступить к написанию модульных, интеграционных, функциональных и приёмочных тестов. Сейчас расскажем о специфичных вещах, касающихся именно нашего проекта на основе нашего большого вебинара о тестировании.
На форуме и в личных сообщениях часто спрашивают о проектировании базы данных и о работе со связями в ActiveRecord во фреймворке. Про сохранение связанных моделей, про их вывод, про сортировку и поиск. Но и при этом многие не знают, откуда эти связи берутся, как организовываются и как за ними нужно следить. Поэтому отдельно поговорили о теории баз даных с практическим уклоном на нормализацию и внешние ключи.
В прошлой части мы немного изменили структуру нашей системы. Фактически это были банальные операции по переносу файлов и частей кода с места на место. А сейчас добавим что-то новое. В комментариях предложили вычищать из базы пользователей, не активировавших свой адрес при регистрации. Рассмотрим. как это можно осуществить.