Видел в одной статье, что можно использовать атрибуты PHP в качестве маршрутов для Laravel, типа, следующим образом:
<?php declare(strict_types=1);
namespace App\Domain\User\Application\Create;
use App\Infrastructure\Controllers\Controller;
use App\Domain\Role\Infrastructure\RoleRepositoryInterface;
#[Route('/admin/user/create', name: 'admin.user.create', method: 'GET')]
final class CreateUserAction extends Controller
{
public function __construct(
private readonly RoleRepositoryInterface $roleRepository,
private readonly CreateUserResponder $userResponder
) {}
public function __invoke(): \Illuminate\View\View
{
return $this->userResponder->handle([
'roles' => $this->roleRepository->getRoleAll()
]);
}
}
Но у меня в проекте не контроллеры, а экшены и находятся они в разных неймспейсах:
│ └── Domain
│ │ │── Role
│ │ └── User
│ │ │ │── Application
│ │ │ │ │── Create
│ │ │ │ │ │── CreateUserAction.php
│ │ │ │ │ └── CreateUserResponder.php
│ │ │ │ └── Delete
│ │ │ │ │ │── DeleteUserAction.php
│ │ │ │ │ └── DeleteUserResponder.php
│ │ │ │ └── Edit
│ │ │ │ │ │── EditUserAction.php
│ │ │ │ │ └── EditUserResponder.php
│ │ │ │ └── Index
│ │ │ │ │ │── IndexUserAction.php
│ │ │ │ │ └── IndexUserResponder.php
│ │ │ │ └── Show
│ │ │ │ │ │── ShowUserAction.php
│ │ │ │ │ └── ShowUserResponder.php
│ │ │ │ └── Store
│ │ │ │ │ │── StoreUserAction.php
│ │ │ │ │ └── StoreUserResponder.php
│ │ │ │ └── Update
│ │ │ │ │ │── UpdateUserAction.php
│ │ │ │ │ └── UpdateUserResponder.php
Можно ли как-то организовать так, чтобы маршрутизация была через атрибуты с подобной структурой проекта, чтобы отказаться от маршрутизации в файле web.php?