Как уйти от толстых моделей? У меня, к примеру, модель User может быть на тысячу строк. Говорят, нужен сервисный слой. Но я не пойму как его организовать на уровне файлов и папок и как это должно примерно выглядеть. Может быть есть примеры кода?
Допустим, я хочу внедрить на сайт сервис PayPal (общается по curl'у c их сервером). В Yii, например, я создавал файл-класс PayPal в папке components и там реализовывал методы. Добавлял в конфиг и потом использовал как Yii::$app->paypal в контроллере и в модели (опять же - бизнес-логика в контроллере и модели). Довольно примитивно. Как мне грамотно создать такой модуль в Laravel. В какой папке? Нужно ли разделать на контракт/реализацию, если реализация всего одна? (опустим, что можно создать единый контракт для всех платёжных систем)
Почему в laravel нет папки Model и модели складываются в App. Знаю, что можно создать самому? Но зачем это сделано. Папка Model — устаревшая структура и есть способ организовать модели по-лучше?
l4m3r, хорошо, я поясню. Модели, как и любые другие классы можно и нужно организовывать так, как вам хочется. Ларавел плевать, где что лежит, если это самое «что» имеет неймспейс и местоположение согласно правилам PSR-4.
JhaoDa, вопрос был: ПОЧЕМУ папки Models нет в стандартной поставке лары, как у других фреймворках. Контроллеры и провайдеры же отделили в отдельные папки, хотя их тоже можно по-разному организовать, а вот для моделей нет —организовывай как хочешь.
xfg, без примера кода я не могу ничего посоветовать. Если это его так напрягает, то пусть сделает анализ кода и отделит "тупые" куски в отдельные классы.
spaceatmoon, вы и с примером кода ничего толкового не посоветуете. Это будет локально. Вырвано. Не систематизировано. Бесполезно. Невозможно спроектировать систему не имея навыков проектирования. Сколько не анализируй код. Многие не понимают, где бизнес код, где инфраструктурный, как это делить и почему. Многие на PHP пишут интуитивно. Результатом такой деятельности является спагетти-код. В книге Implementing domain-driven design есть решение по проектированию от начала и до конечного результата.
1. Создать папку Services
2. Выделить части бизнес логики в сервисы
3. Написать сервисы и подключить через Service Provider в Service Container
4. Написать фасады (по желанию)
5. ...
6. PROFIT