Лучший подход для структуры ядра Laravel 5

Итак, Laravel 5 предлагает новую структуру папок, и я пытаюсь найти лучший способ управления моими пользовательскими классами (имея в виду тесты PhpSpec)

Ранее я сделал что-то вроде этого

  • приложение
    • Обезьяны (где проводились мои индивидуальные занятия)
    • модели
    • контроллеры
    • так далее

с новой структурой я должен пытаться сегментировать мои классы, чтобы соответствовать новой структуре каталогов? Например, теперь в приложении есть папка Http. Должен ли я добавлять в этот каталог соответствующие пользовательские классы?

  • приложение
    • Http
      • Apes
        • SomeHttpClass
      • Контроллеры
      • Промежуточное
    • Провайдеры
      • Apes
        • MyServiceProvider
      • AppServiceProvider.php

Я знаю, что это, вероятно, вопрос личных предпочтений и т. Д., Но у меня возникли небольшие проблемы, когда я обдумываю, какой подход наилучшей практики заключается в выкладке нового нового проекта L5.

Любые рекомендации приветствуются.

Обновить

Поработав некоторое время, я остановился на подходе, который прекрасно работает для меня (это небольшое приложение.

  • приложение
    • Приставка
    • Обработчики
    • Помощники
    • Http
      • Контроллеры
        • Администратор
        • общественного
      • Промежуточное
      • Запросы
    • Провайдеры
    • Хранилища
      • AbstractDbRepository.php
      • ClientRepositoryInterface.php
      • DbClientRepository.php
      • DbScheduleRepository.php
      • ScheduleRepositoryInterface.php
    • Расписание
      • Исключения
      • Schedule.php
      • ScheduleCalculator.php
      • ScheduleInputTransformer.php
      • ScheduleTimes.php
    • Черты
    • SimpleModel.php

Я решил, что если бы модель была достаточно простой, я бы просто оставил ее в корне приложения, но для более сложных моделей, требующих более тщательного тестирования, я бы использовал шаблон репозитория.

Я просто сохранил контроллеры в исходном расположении, но разделил их на admin / public. Существует вероятность того, что мы также создадим небольшой API для этого, и я, вероятно, разместлю все, что связано с API, в app / Api.

3

Решение

На этом этапе L5 все еще претерпевает серьезные изменения. Пока нет «лучшего подхода» к тому, как это сделать, и ответ будет меняться со временем, пока L5 не будет выпущен.

Реальность такова, что вы можете сделать это разными способами, и все будет хорошо. Тейлор всегда говорил, чтобы структурировать приложение о том, как вы хочу, чтобы это вело себя — не потому, что кто-то еще сказал тебе делать это таким образом.

2

Другие решения

Тейлор Отвелл изложил структуру Userscapes Snappy в своем блоге:
http://blog.userscape.com/post/organizing-snappy

Хотя он основан на Laravel 4.x, его, безусловно, стоит прочитать.

Также исходный код для Laravel.io имеет интересную разделенную на домены структуру:
https://github.com/LaravelIO/laravel.io

0

Вам даже не нужно придерживаться стандартного способа размещения контроллеров, представлений или моделей, поскольку большинству из них для изменения требуется только одна строка в одном файле в папке приложения. Я выполнил простой поиск в файлах ссылок на каталоги, которые я хотел изменить, и быстро нашел следующее:

Каталог контроллера по умолчанию установлен в приложении / 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

Конечно, вам нужно изменить пространство имен во всех перемещенных файлах.

0
По вопросам рекламы [email protected]