Я работал над пакетом под названием Аннотации маршрутов Laravel, который позволяет вам определять маршруты непосредственно в классах вашего контроллера, используя атрибуты PHP.

Мой оригинальный пост об этом можно найти здесь.

Версия 0.2.0 уже выпущена. 😃

Что нового?

Это весьма важное обновление, поскольку оно предоставляет возможность определять маршруты Resource и Api Resource.

В настоящее время вы можете определить эти маршруты, добавив следующее в файл маршрутов.

use App\Http\Controllers\PhotoController;
use App\Http\Controllers\PhotoApiController;

Route::resource('photos', PhotoController::class)

Route::apiResource('api.photos', PhotoApiController::class);

С помощью этого пакета вы теперь можете определять их в своих классах контроллера.

Минимум, который вам нужен, это следующее в вашем файле маршрутов.

# Load routes from a single controller
Route::annotation(UserController::class);

# Load routes for all controllers in a directory
Route::directory(__DIR__ . '/Controllers');

Ресурсные маршруты

Вы можете настроить маршруты ресурсов, выполнив следующие действия:

<?php
namespace App\Http\Controllers;

use Illuminate\Routing\Controller;
use SmashedEgg\LaravelRouteAnnotation\ResourceRoute;

#[ResourceRoute(name: 'photos')]
class PhotoController extends Controller
{
    public function index()
    {
    }

    public function create()
    {
    }

    public function store()
    {
    }

    public function edit($id)
    {
    }

    public function update()
    {
    }

    public function destroy()
    {
    }
}

Маршруты ресурсов API

Вы можете настроить маршруты ресурсов API, выполнив следующие действия:

<?php

namespace App\Http\Controllers;

use Illuminate\Routing\Controller;
use SmashedEgg\LaravelRouteAnnotation\ResourceRoute;

#[ApiPhotoRoute(name: 'api.photos')]
class PhotoApiController extends Controller
{
    public function index()
    {
    }

    public function show()
    {
    }

    public function store()
    {
    }

    public function update()
    {
    }

    public function destroy()
    {
    }
}

Для получения дополнительной информации о пакете лучше всего прочитать документацию на github, которая в ближайшее время будет обновлена ​​и будет более подробной.

Заключение

Итак, вот новые возможности версии 0.2.0. Мне нужно еще немного поработать, прежде чем версия 1 будет готова, но я буду рад любым отзывам и предложениям.