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


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

Ранее я делал что-то подобное

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

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

  • приложение
    • Http
      • Обезьяны
        • Некоторый класс
      • Контроллеры
      • Промежуточное программное обеспечение
    • Поставщики услуг
      • Обезьяны
        • Поставщик услуг myserviceprovider
      • AppServiceProvider.php

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

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

Обновление

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

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

Author: alexleonard, 2014-10-09

3 answers

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

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

 2
Author: Laurence, 2014-10-09 23:27:36

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

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

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

 0
Author: Andreas Bergström, 2014-11-12 08:06:14

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

Каталог контроллера по умолчанию установлен в 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
база данных/фабрики/фабрика моделей

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

 0
Author: Zoltan Laszlo Ferenci, 2015-09-09 16:35:47