sebastiaanluca/laravel-route-model-autobinding

此包已被废弃,不再维护。未建议替代包。

自动将Eloquent模型绑定为路由段使用。

5.0.0 2020-10-19 15:00 UTC

This package is auto-updated.

Last update: 2022-03-07 15:05:38 UTC


README

Latest stable release Software license Build status Total downloads Total stars

Read my blog View my other packages and projects Follow @sebastiaanluca on Twitter Share this package on Twitter

立即在路由中使用模型,无需担心维护任何列表或映射。

中等到大型Laravel应用程序可能拥有大量模型。如果您是路由模型绑定的重度用户,以自动检索并注入控制器中的模型实例,这意味着您必须手动在路由服务提供程序中注册数十或数百个模型。然后您需要为每个新模型、更改或删除的模型执行相同操作,这使得这个实用的功能难以维护且容易忘记。

此包通过为您完成所有繁重工作来解决手动注册每个模型的问题。它读取您的composer.json PSR-4自动加载部分,并扫描所有模型目录以查找可用的Eloquent模型。然后,它使用您选择的案例类型(见配置大小写)将每个模型显式绑定到路由器作为路由段变量。

示例

删除以下样板代码

public function boot() : void
{
    Route::model('user', \App\Users\User::class);
    Route::model('order', \App\Orders\Order::class);
    Route::model('shoppingCart', \App\Carts\Cart::class);
    Route::model('Item', \App\Item::class);
    Route::model('Admin', \App\Users\Admin::class);
    … (repeat dozens of times)
}

只需这样做(适用于您应用程序中的任何Eloquent模型)

Route::get('profile/{user}', ShowProfile::class);
Route::get('orders/{order}', ShowOrder::class);
Route::get('carts/{shoppingCart}', ShowShoppingCart::class);
…

目录

要求

  • PHP 7.3或更高版本
  • Laravel 7.0或更高版本

如何安装

通过Composer

composer require sebastiaanluca/laravel-route-model-autobinding

如何使用

定义模型命名空间

Laravel路由模型自动绑定使用您的composer.json PSR-4自动加载部分来了解哪些命名空间和路径需要扫描。在任何一个新的Laravel项目中,默认的App\\命名空间已经就绪,因此对于大多数项目无需额外设置。如果您已注册其他命名空间,如本地模块或(开发)包,它们也将被扫描。

{
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "MyModule\\": "modules/MyModule/",
            "MyPackage\\": "MyPackage/src/"
        }
    }
}

此外,它过滤掉特性、抽象类、辅助文件和其他不可用项目,仅绑定有效的Eloquent模型。

路由段变量

安装此包后,您可以直接在路由中使用别名Eloquent模型

Route::get('profile/{user}', ShowProfile::class);
Route::get('orders/{order}', ShowOrder::class);
Route::get('carts/{shoppingCart}', ShowShoppingCart::class);
…

除了为您扫描和别名化模型外,此包不会更改Laravel的任何原生功能。因此,请参阅Laravel文档了解如何使用路由模型注入

生产中的绑定缓存

为了在生产环境中缓存所有绑定并加速应用程序,请将缓存命令添加到您的部署脚本中。

php artisan autobinding:cache

这将扫描您当前的所有模型并将静态缓存文件写入到 bootstrap/cache 目录。在随后的框架启动过程中,它会读取缓存文件而不是实时扫描和别名。

请注意,这会因此 禁用运行时扫描,意味着新的模型将不会被识别,现有模型的更改也不会反映出来(在开发过程中不是很方便)。但是,您仍然可以在配置文件中更改大小写类型,因为绑定发生在后续阶段。

要清除缓存文件,请运行

php artisan autobinding:clear

配置

运行

php artisan vendor:publish

然后选择

laravel-route-model-autobinding (configuration)

以发布配置文件。

大小写

默认情况下,别名模型的默认大小写类型设置为 驼峰式。您可以将此更改为使用驼峰、蛇或 Studly 大小写。

有关可能的选项,请参阅 \SebastiaanLuca\RouteModelAutobinding\CaseTypes

驼峰式(默认)

Route::get('carts/{shoppingCart}', ShowShoppingCart::class);

蛇形

Route::get('carts/{shopping_cart}', ShowShoppingCart::class);

Studly

Route::get('carts/{ShoppingCart}', ShowShoppingCart::class);

即使在缓存了您的模型之后,大小写类型仍然可以更改。

许可协议

本软件包在 MIT 许可协议(MIT)下运行。有关更多信息,请参阅 LICENSE

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

测试

composer install
composer test

贡献

有关详细信息,请参阅 CONTRIBUTINGCODE_OF_CONDUCT

安全

如果您发现任何与安全相关的问题,请通过电子邮件 hello@sebastiaanluca.com 联系我们,而不是使用问题跟踪器。

致谢

关于

我叫Sebastiaan,是一名专注于构建定制Laravel应用程序的自由职业后端开发人员。查看我的 作品集 了解更多信息,查看我的 博客 了解最新技巧,以及我的其他 软件包 以启动您的下一个项目。

您有一个需要指导的项目吗?请通过电子邮件 hello@sebastiaanluca.com 联系我!