olliecodes/laravel-route-registrars

通过基于对象的方法注册路由的替代方案。

1.0.0 2022-08-08 15:11 UTC

This package is auto-updated.

Last update: 2024-09-16 16:56:22 UTC


README

A Laravel package that introduces a clean object based alternative to Laravel route files.

Packagist Version Packagist PHP Version Support GitHub codecov

Laravel 路由注册器

本包引入了一种基于对象的简洁方法,用于在 Laravel 应用程序中定义路由。有关基本原理的教程可以在 Laravel 新闻 上找到,由 @juststeveking 编写。

安装

通过 composer 安装。

$ composer require olliecodes/laravel-route-registrars

全新 Laravel 安装

如果您要在全新 Laravel 安装上安装此包,您在处理路由之前需要运行以下命令。

php artisan init:routing

这将使用与路由注册器兼容的文件覆盖 app/Providers/RouteServiceProvider.php 文件,并创建默认路由注册器以替换 routes/web.phproutes/api.php

现有 Laravel 安装

如果您已经有了应用程序,建议您阅读 Laravel 新闻文章,该文章介绍了这种方法,因为您将需要手动重构路由服务提供者和路由文件。

要求

本包需要以下内容;

  • PHP >= 8.0(包括 8)。
  • laravel/framework >= 9.0

用法

要注册新路由,您可以将它们的定义添加到 RouteRegistrarmap 方法中,或者创建一个新的。

创建新的注册器

以下命令将在 app/Http/Routes 中创建一个新的注册器。

php artisan make:registrar {name}

{name} 可以是任何有效的类名,或者子命名空间。例如,使用 Auth\\GuestRoutes 将创建 app/Http/Routes/Auth/GuestRoutes.php

创建注册器时有一些选项可用。

--C|hasChildren

创建具有 MapRouteRegistrars 特性的路由注册器,以便可以映射子注册器。

--W|web

app/Http/Routes/Web 中创建路由注册器,为那些正在分割 Web 和 API 路由的人保留了此选项。

--A|API

与上述选项完全相同,但它在 app/Http/Routes/Api 中创建它。

注册注册器

任何希望注册注册器的类都可以使用以下特质。

OllieCodes\Registrars\Concerns\MapsRouteRegistrars

这样做之后,有三种注册方式。所有这些都需要以下类的实例。

Illuminate\Contracts\Routing\Registrar

此接口由 Laravel Router 类实现,因此您可以使用它。

注册多个

使用 Laravel 路由器实例和注册器的完全限定类名数组调用以下方法。

mapRouteRegistrars(Registrar $router, array $registrars)

注册一个

使用 Laravel 路由器实例和注册器的完全限定类名调用以下方法。

mapRouteRegistrar(Registrar $router, string $registrar)

从路径注册

使用 Laravel 路由器实例和注册器所在的路径数组调用以下方法。

此方法将使用文件返回的顺序,因此请考虑路由顺序优先级。

loadRouteRegistrars(Registrar $router, array $paths)