Если это полезно, я обычно структурирую свои приложения Laravel следующим образом:
- приложение
- Core (Широко распространенное приложение)
- Консоль
- Http
- Kernel.php
- rout.php (извлекает все файлы маршрутов)
- Middleware
- ... (Промежуточное ПО Laravel)
- Запросы
- ... (все базовые классы базовых запросов)
- Контроллеры
- Услуга
- Поставщики
- AppServiceProvider.php
- ... (Остальные провайдеры Ларавеллы)
- Исключения
- Хранилища
- helpers.php (Обычно у меня есть файл помощников)
- Домен (Business Logic Stuff)
- Пользователь
- User.php (модель пользователя)
- Http
- Запросы
- Отделы
- Division.php (Другая модель)
- Http
Очевидно, я оставляю некоторые вещи для краткости, но вы поняли идею.
Мое определение PSR-4 выглядит примерно так:
"autoload": {
...
"files": [
"app/Core/helpers.php"
],
"psr-4": {
"App\\": "app/Domain/",
"Core\\": "app/Core/"
}
...
}
Для изменения структуры Laravel, подобной этой, также требуется обновить файл bootstrap/app.php
новыми пространствами имен, а также любые файлы, которые вы перемещаете из установки Laravel по умолчанию.
Используя приведенную выше структуру и в зависимости от того, что будет делать этот новый объект, вам должно быть совершенно ясно, где вы бы поместили его. Вы можете даже создать папку Models для класса, скажем, User . Или просто поместите новый класс непосредственно рядом с моделью User.php , предполагая, что он связан с пользователями.
Это может выглядеть примерно так:
<?php namespace App\User;
class SomeClassName {
...
}
Тогда ссылка на, скажем, UserController.php может выглядеть следующим образом:
<?php namespace App\User;
use Core\Http\Controllers\Controller;
use App\User\SomeClass;
class UserController extends Controller {
public function __constructor(SomeClass $someClass)
{
$this->someClass = $someClass;
}
}
Все гипотетически, но, надеюсь, вас направят в правильном направлении.