Итак, Laravel 5 предлагает новую структуру папок, и я пытаюсь найти лучший способ управления моими пользовательскими классами (имея в виду тесты PhpSpec)
Ранее я сделал что-то вроде этого
с новой структурой я должен пытаться сегментировать мои классы, чтобы соответствовать новой структуре каталогов? Например, теперь в приложении есть папка Http. Должен ли я добавлять в этот каталог соответствующие пользовательские классы?
Я знаю, что это, вероятно, вопрос личных предпочтений и т. Д., Но у меня возникли небольшие проблемы, когда я обдумываю, какой подход наилучшей практики заключается в выкладке нового нового проекта L5.
Любые рекомендации приветствуются.
Поработав некоторое время, я остановился на подходе, который прекрасно работает для меня (это небольшое приложение.
Я решил, что если бы модель была достаточно простой, я бы просто оставил ее в корне приложения, но для более сложных моделей, требующих более тщательного тестирования, я бы использовал шаблон репозитория.
Я просто сохранил контроллеры в исходном расположении, но разделил их на admin / public. Существует вероятность того, что мы также создадим небольшой API для этого, и я, вероятно, разместлю все, что связано с API, в app / Api.
На этом этапе L5 все еще претерпевает серьезные изменения. Пока нет «лучшего подхода» к тому, как это сделать, и ответ будет меняться со временем, пока L5 не будет выпущен.
Реальность такова, что вы можете сделать это разными способами, и все будет хорошо. Тейлор всегда говорил, чтобы структурировать приложение о том, как вы хочу, чтобы это вело себя — не потому, что кто-то еще сказал тебе делать это таким образом.
Тейлор Отвелл изложил структуру Userscapes Snappy в своем блоге:
http://blog.userscape.com/post/organizing-snappy
Хотя он основан на Laravel 4.x, его, безусловно, стоит прочитать.
Также исходный код для Laravel.io имеет интересную разделенную на домены структуру:
https://github.com/LaravelIO/laravel.io
Вам даже не нужно придерживаться стандартного способа размещения контроллеров, представлений или моделей, поскольку большинству из них для изменения требуется только одна строка в одном файле в папке приложения. Я выполнил простой поиск в файлах ссылок на каталоги, которые я хотел изменить, и быстро нашел следующее:
Каталог контроллера по умолчанию установлен в приложении / Providers / RouteServiceProvider.php:
protected $namespace = 'App\Http\Controllers';
В том же файле вы можете изменить путь к файлу rout.php:
public function map(Router $router)
{
$router->group(['namespace' => $this->namespace], function ($router) {
require app_path('Http/routes.php');
});
}
Чтобы изменить путь к моделям, вам просто нужно изменить ссылки, чтобы использовать правильное пространство имен в других файлах. Например, модель User упоминается в этих файлах:
конфиг / auth.php
конфиг / services.php
базы данных / фабрики / ModelFactory
Конечно, вам нужно изменить пространство имен во всех перемещенных файлах.