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