Проектирование api
Например, очень часто программисты любят запихивать данные одного функционала в один монолитный класс.
| class Product | 
|---|
| id | 
| title | 
| size | 
| price | 
| amount | 
| order | 
| class User | 
|---|
| id | 
| name | 
| size | 
| desc | 
| active | 
Нужно уходить от этого, и дробить это на независимые контексты, независимые сервисы.
Модульное разделение кода
Делим класс Product на подклассы. В них будет информация которая нужна только для этого сервиса
Каждый модуль это не одна таблица или один класс, это может целый набор таблиц и классов
| Склад | 
|---|
| id - id товара | 
| amount - стоимость | 
| size - размер склада | 
| Бухгалтерия | 
|---|
| id - id товара | 
| price - цена | 
| Заказ | 
|---|
| id id товара | 
| amount - сколько заказали | 
| Каталог | 
|---|
| id - id товара | 
| title - название | 
| description - описание | 
| photo - фото | 
| Доставка | 
|---|
| id - id товара(артикул) | 
| size - размер | 
| weight - вес | 
| delivery - отдельная таблица | 
| user - phone, address, email | 
| Authentication | 
|---|
| id - id user | 
| login - | 
| password - | 
| Comment | 
|---|
| commentator - отдельная сущность id user = комментатор | 
| id - id комментария | 
Получается, что эти вещи лучше делать отдельными модулями и хранить только ту информацию которая нужна модулю. Тогда мы не тащим всю таблицу User через весь проект, а выводим только ту инфу которая нужна.
Товар и пользователь при таком подходе хранится везде, а не в одной таблице.
Как это выглядит в коде
Модули могут называться следующем образом
- Author
 - Blog
 - Comment
 - Data
 - Favorite
 - OAuth
 - Payment
 - Product
 - HTTP
 
В каждом модуле лежит набор директорий с классами, к примеру:
Модуль words работа со словами
   Words
    Entity - сущности
        Word - название сущности
            Word.php - класс сущности
            WordRepository.php - репозиторий сущности
    Command - команды
        Word - название сущности
            CreateWord - название команды
                Command.php - класс команды
                Handler.php - обработчик команды        
Например, класс Command.php. Это просто DTO.
<?php
declare(strict_types=1);
final class Command
{
    public function __construct(
        public string $name = '',
        public string $description = ''
    ) {
    }
}
Здесь самое важное, нужно строить структуру удобную в первую очередь нам!