serendipias/laravel-urn

通用的 Laravel urn 标识符

0.5.0 2019-12-11 23:08 UTC

This package is auto-updated.

Last update: 2024-08-28 21:08:49 UTC


README

为您的 Laravel 应用程序创建 urn 标识符的简单方法,允许以更描述性的方式识别资源或模型。

alt text

安装

可以通过运行以下命令安装应用程序

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