serendipias / laravel-urn
通用的 Laravel urn 标识符
0.5.0
2019-12-11 23:08 UTC
Requires
- php: ^7.2
- illuminate/contracts: ^6.6
- illuminate/support: ^6.6
- league/uri: ^5.3
- psy/psysh: ^0.9
- ramsey/uuid: ^3.8
- symfony/intl: ^4.3|^5.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-08-28 21:08:49 UTC
README
为您的 Laravel 应用程序创建 urn 标识符的简单方法,允许以更描述性的方式识别资源或模型。
安装
可以通过运行以下命令安装应用程序
composer require serendipias/laravel-urn
该应用程序需要 laravel/lumen >= 6.x
使用
注册提供者
在 Laravel 的 config/app.php 文件中将 urn 服务提供者添加到 providers 数组中
\Serendipias\Urn\UrnServiceProvider::class,
如果您使用的是 Lumen,您需要在您的 bootstrap/app.php 文件中注册服务提供者
$app->register(\Serendipias\Urn\UrnServiceProvider::class);
发布配置
发布配置,运行以下命令
php artisan vendor:publish --tag=urn
在 Lumen 中,您需要手动将 urn 文件复制到您的配置目录。
该包有 3 个基本配置,这些配置是使用 laravel/lumen 模型所必需的
- models_namespace: 模型命名空间,用于从 urn 获取模型实例
- service: 用于声明 urn 创建的位置,标识符的来源应用程序
- stage: 判断资源是在生产、测试、预发布或单元测试环境中生成的。
启用模型生成 urn
要允许模型成为 urn 可识别的,模型必须扩展 Serendipias\Urn\Contracts\UrnIdentifiable
接口,该包提供了一个具有接口默认实现的 traits UrnIdentifiableTrait
。
要使用模型生成 urn,注入或创建 Serendipias\Urn\Services\UrnService::class
,然后您可以从那里对模型进行编码,或解码 urn 字符串,在这两种情况下,都会返回一个 Serendipias\Urn\Support\Urn
。
Urn 实例示例
Serendipias\Urn\Support\Urn { -urn: "urn:laravel:local:user:1" -namespace: "App\Models" -parts: array:5 [ 0 => "urn" 1 => "laravel" 2 => "local" 3 => "user" 4 => "1" ] }
编码模型
$service = app(\Serendipias\Urn\Services\UrnService::class); $urn = $service->encode(\App\Models\User::find(1)); $urn->getUrnString(); // urn:laravel:local:user:1
解码 urn 字符串
$service = app(\Serendipias\Urn\Services\UrnService::class); $urn = $service->decode('urn:laravel:local:user:1'); $urn->find(); // will return User model or null if not found