Общие рекомендации при работе с фреймворками
- Не писать код в маршрутах. Бизнес логика только в контроллерах
- Шаблоны без PHP-кода и JS/CSS-кода - используем менеджеры пакетов
- Использовать модели вместо прямых запросов
- Писать тесты (логика-тесты, тесты-логика)
- Использовать миграции, создавать связи на уровне БД - это улучшить целостность данных. Использовать индексы, создавать новые миграции, а не изменять старые. Индексы нужны для ускорения сортироки и фильтрации данных.
- Контроллер - это регулировщик движения (его задача передать выполнение)
- Соглашение об именовании маршрутов (folder.controllerName.ActionName)
- Для контроллеров делай baseComtroller
- Группируй модели и контроллеры по сущностям BlogPost BlogCategory что бы выделить их по сущьностям
- Все аргументы, что передаешь в функцию, оформляй в виде переменной, после передавай это в функцию (аналогично при работе с return - возвращяй значение переменной, а не return $this->) $ar = []; func($ar);. Так удобнее делать отдалку во время рефакторинга кода
- Используй class::class вместо текстовой строки
- При выборке из БД бери только те поля, которые нужно
- findOrFail() нужно использовать только вверху функции
-
Рекомендации при создании методов:
- 1 метод = 1 задача
- имя метода должно отражать его задачу (должно содержать глагол)
- не больше 7 параметров
- Открытые методы рекомендую группировать в начале класса (так можно выделить интерфейс, т.е. методы доступные из вне
- Обычно параметры функции которые имеют значения по умолчанию добавляются в конец
- Статические методы нужны когда для класса нужна вспомогательная функцию
-
Рекомендации к созданию классов
- Класс нужно связывать с сущностью
- Публичными нужно оставлять только те методы, которые будут использоваться (остальное в инкапсуляцию)
- Класс не должен обрастать лишними функциями - только тем, что нужно для решения задачи
- Класс должен быть максимально простым
- Класс должен быть максимально независимым от всей остальной программы
- Класс должен описывать решение 1 задачи (ничего лишнего)
- Класс не может называться глаголом (глагол - это действие (метод)
Внутри класса описываются данные (свойства) и методы.
Про миграции:
Миграция - это контроль версии БД, каждая миграция это аналог коммита в git.
Если создаём таблицу, то имя миграции начинается с create, если меняем таблицу то alter, если удаляем таблицу, то drop.
Следующая часть имени миграции это имя колонки или индекса над которым будет произведены изменения.
alter_data_model_add_property_column
alter_data_model_alter_property_column_to_text
alter_data_model_alter_property_column_set_default_value
alter_data_model_create_index_on_code_type_columns
alter_data_model_create_unique_index_on_code_column
Здесь можно оставить комментарий!