smpita / configas
Laravel 类型化配置解析器
Requires
- php: ^8.1
- illuminate/contracts: ^10.0|^11.0
- smpita/typeas: ^3.1
Requires (Dev)
- laravel/pint: ^1.0
- orchestra/testbench: ^8.4|^9.0
- pestphp/pest: ^2.20
README
你使用 Laravel 并且在执行静态分析时,是否在处理 config() 的混合签名时感到困扰?
Smpita/ConfigAs 会为你类型化配置调用。
此包封装了 Smpita/TypeAs,这是一个通用的 PHP 库,适用于任何需要静态分析或严格类型检查的 PHP 项目。
安装
您可以通过 composer 安装此包
composer require smpita/configas
用法
请参阅 SIGNATURES 以获取当前方法和签名的列表。
通用用法
传递一个 key
,如果该 key
不是指定的类型,它将抛出 ConfigAsResolutionException
。
use Smpita\ConfigAs\ConfigAs; $typed = ConfigAs::int('config.key');
如果您想抑制抛出异常,请提供默认值。
use Smpita\ConfigAs\ConfigAs; $typed = ConfigAs::int('config.key', 123);
类方法
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
缓存
为了保持性能,类型只验证一次,结果在请求的生命周期内缓存在静态数组中。为了确保值是新鲜的,您可以使用针对每个类型的 fresh
方法。
use Smpita\ConfigAs\ConfigAs; $typed = ConfigAs::freshString('config.key');
忘记
对于每种类型,您都可以忘记任何特定的缓存值。
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);
辅助函数
在 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');
弃用
测试
composer test
更改日志
请参阅 CHANGELOG 以获取有关最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 以获取详细信息。
安全漏洞
请参阅我们如何报告安全漏洞的 安全策略。
鸣谢
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 以获取更多信息。