Иван Шумов, да, потому что есть такая вещь, как регламент, который стоит соблюдать. В BEM, например, нормально, когда в папке 1-2 файла. Кроме того, когда нужно будет расширить компоненту, гораздо легче будет докинуть нужные файлы в уже имеющиеся директории, чем множить кучу или переделывать.
Позор таким разработчикам, что кладут репозиторий и модель в одну кучу. Если такое есть во фреймворке - стоит задуматься о переходе на что-нибудь другое.
При импорте просто импортируется неймспейс, что гораздо лаконичнее и понятнее по коду. Я не знаю, кем надо быть, чтобы получить проблемы с этим - сам так же пишу. Ведь все очень просто - максимум лаконичности, максимум логичности, минимум дублирования.
namespace App;
use App\Repository;
use App\Controller;
// ...
$UserRepository = new Repository\User;
$UserController = new Controllers\User;
Если кто скажет, что дублируется слово Repository в коде - если критично, то можно использовать алиас для конкретной сущности. Но, это грязно, как и импортировать конкретные сущности.
Насколько хороша практика не делать session_start, если пользователь не авторизован (нет куки) и \ или не пытается авторизоваться (пустой request)? Этот прием решил бы проблему автора.
Wentixon, ну вообще-то, если пойти дальше, то можно вынести логику проверки и генерацию кода в ApiResponse. Что-то, возможно, имеет смысл вынести в посредника. То, что я написал - классическая, проверенная временем практика, в которой нет ничего плохого.
Про типовые ответы я ничего не написал, потому что они и так автоматически выбросятся в очень большом ряде случаев, еще до обращения к api. Я не знаю, что у автора в $data. Возможно, что ему не нужно возвращать eloquent модель, чтобы она сразу сконвертилась в нужный response, а может, он хочет единого и унифицированного механизма обработки ответов. Может, ему нужно, чтобы статус был 200, но свойство status было error.
Для таких случаев создать новый тип response - отличный вариант.
А вот кидать http-коды ответов через исключения, которые не предназначены для того, чтобы в них кидали http-коды, извращение. Исключение происходит тогда, когда в приложении происходит исключительная ситуация. Возврат кода, отличного от 200, или пустой коллекции, исключениями не являются. Эдак можно вообще return упразднить, все через исключения выкидывать, а возвращать в одном месте.
Dmitri Sinitsa, шинда отличная ОС, ее любят пользователи. Любили, вернее. Она как жена - сперва влюбляешься (Win 98, ХР), потом пара лет любви и обожания (Windows 7, Windows 8.1), а потом твоя няша превращается в стерву (Windows 10), и ты уходишь к другой (Linux).
slo_nik, не, такого не будет) Я же никогда не печатал в шинде format c:/ ) А рут для этого юзера мне был нужен прежде всего для sftp. Ибо еще напряжнее, когда ты не можешь ни в папку зайти, ни sudo написать.
А что вы скажете насчет использования import config.js (как делаю я)? Это заодно позволяет мне делать сборки для различных окружений (config.dev.js и т.п.). А если нужного конфига нет, сборка просто не осуществится.