smpita/configas

Laravel 类型化配置解析器

资助包维护!
smpita

v1.1.1 2024-03-27 03:23 UTC

This package is auto-updated.

Last update: 2024-09-27 04:30:03 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

你使用 Laravel 并且在执行静态分析时,是否在处理 config() 的混合签名时感到困扰?

Smpita/ConfigAs 会为你类型化配置调用。

此包封装了 Smpita/TypeAs,这是一个通用的 PHP 库,适用于任何需要静态分析或严格类型检查的 PHP 项目。

安装

您可以通过 composer 安装此包

composer require smpita/configas

用法

请参阅 SIGNATURES 以获取当前方法和签名的列表。

通用用法

SIGNATURES#resolving

传递一个 key,如果该 key 不是指定的类型,它将抛出 ConfigAsResolutionException

use Smpita\ConfigAs\ConfigAs;

$typed = ConfigAs::int('config.key');

如果您想抑制抛出异常,请提供默认值。

use Smpita\ConfigAs\ConfigAs;

$typed = ConfigAs::int('config.key', 123);

类方法

SIGNATURES#class

class() 的签名略有不同,因为您需要指定期望的类。

use Smpita\ConfigAs\ConfigAs;

$typed = ConfigAs::class(Target::class, 'config.key');

您仍然可以提供默认值。

use Smpita\ConfigAs\ConfigAs;

$typed = ConfigAs::class(Target::class, 'config.key', new Target('default'));

可空类型

如果您希望接收 null 而不是抛出异常,每个类型方法都有一个可空的对应方法。

use Smpita\ConfigAs\ConfigAs;

ConfigAs::nullableString('config.key') === null; // true

缓存

SIGNATURES#cache

为了保持性能,类型只验证一次,结果在请求的生命周期内缓存在静态数组中。为了确保值是新鲜的,您可以使用针对每个类型的 fresh 方法。

use Smpita\ConfigAs\ConfigAs;

$typed = ConfigAs::freshString('config.key');

忘记

SIGNATURES#forgetting

对于每种类型,您都可以忘记任何特定的缓存值。

use Smpita\ConfigAs\ConfigAs;

ConfigAs::forgetFloat('config.key');

您可以清除特定类型的缓存。

use Smpita\ConfigAs\ConfigAs;

ConfigAs::flushFloats();

您可以清除所有键。

use Smpita\ConfigAs\ConfigAs;

ConfigAs::flush();

解析器

SIGNATURES#resolver-registration

您可以利用包含的 Smpita\TypeAs 库来创建自己的自定义解析器。有关创建、全局注册和完整说明,请参阅 库文档

单次使用

$typed = Smpita\ConfigAs::string('config.key', null, new CustomStringResolver);

辅助函数

SIGNATURES#helpers

Smpita\ConfigAs 命名空间中存在一个名为 configAs() 的辅助方法。

use function Smpita\ConfigAs\configAs;

$configAs = configAs();

$string = $configAs->string('config.string.key');
$array = $configAs->array('config.array.key');

解析器方法有一个位于 Smpita\ConfigAs 命名空间中的相关辅助方法。辅助方法名称遵循 ConfigAs 方法名称,但前面加上了 config 并使用 camelCase

use function Smpita\ConfigAs\configString;

$typed = configString('config.key');

弃用

SIGNATURES#deprecations

测试

composer test

更改日志

请参阅 CHANGELOG 以获取有关最近更改的更多信息。

贡献

请参阅 CONTRIBUTING 以获取详细信息。

安全漏洞

请参阅我们如何报告安全漏洞的 安全策略

鸣谢

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 以获取更多信息。