kero / typesafe-env
封装Laravel的Env以支持类型安全。
0.1.0
2023-11-02 08:22 UTC
Requires
- php: ^8.1
- illuminate/support: ^10.0
- phpoption/phpoption: ^1.9
- vlucas/phpdotenv: ^5.5
Requires (Dev)
- ergebnis/composer-normalize: ^2.39
- laravel/pint: ^0.1.2 || ^1.0.0
- pestphp/pest: ^2.24
- pestphp/pest-plugin-type-coverage: ^2.4
- phpstan/phpstan: ^1.10
README
通过以下命令安装: composer req kero/typesafe-env
用法
假设以下环境变量
API_URL=foo APP_STRING_OR_NULL=null APP_DEBUG=true APP_LOG=false APP_BOOL_OR_NULL=null APP_PI=3 APP_BETTER_PI=3.14
use Kero\TypeSafeEnv\Env; var_dump(Env::getString('API_URL')); // string(3) "foo" var_dump(Env::getNullableString('APP_STRING_OR_NULL')); // NULL var_dump(Env::getBool('APP_DEBUG')); // bool(true) var_dump(Env::getBool('APP_LOG')); // bool(false) var_dump(Env::getNullableBool('APP_BOOL_OR_NULL')); // NULL var_dump(Env::getInt('APP_PI')); // int(3) var_dump(Env::getFloat('APP_PI')); // float(3.14)
❗ 由于Laravel的实现,值 null
和 (null)
都被视为 NULL
。
本地开发
代码风格
当前使用纯 PSR-12 通过 Laravel Pint。通过以下方式应用代码风格:
make pint
测试
使用 Pest 进行测试。运行现有测试:
make test
❗ 测试依赖于在 .env.testing 中定义的环境变量
类型覆盖率 也可以通过Pest进行测试。当前在 Makefile 中的实现有bug ... (TODO: 在Makefile中通过Docker修复命令)
./vendor/bin/pest --type-coverage --min=100
代码分析
PHPStan 已配置为通过以下方式检查 ./src/
和 ./tests/
:
make analyse
各种
- 通过
ergebnis/composer-normalize
标准化 composer.json 文件
composer normalize