coolephp / options-resolver
优雅的校验类初始化选项、配置。 - 优雅的校验类初始化选项、配置。
v1.0.0
2021-02-24 03:07 UTC
Requires
- php: >=7.2
- symfony/options-resolver: ^5.0
Requires (Dev)
- brainmaestro/composer-git-hooks: ^2.7
- friendsofphp/php-cs-fixer: ^2.16
- mockery/mockery: ^1.2
- phpunit/phpunit: ^7 || ^8
- vimeo/psalm: ^3.11
README
优雅的校验类初始化选项、配置。 - 优雅的校验类初始化选项、配置。
要求
- PHP >= 7.2
安装
$ composer require coolephp/options-resolver -vvv
用法
示例类
use Symfony\Component\OptionsResolver\OptionsResolver; class Email { private $options; /** * Email constructor. * * @param array $options */ public function __construct(array $options = []) { $this->setOptions($options); } /** * @return mixed */ public function getOptions() { return $this->options; } /** * @param array $options */ public function setOptions(array $options): void { $this->options = configure_options($options, function (OptionsResolver $resolver) { $resolver->setDefaults([ 'host' => 'smtp.example.org', 'username' => 'user', 'password' => 'password', 'port' => 25, ]); $resolver->setRequired(['host', 'username', 'password', 'port']); $resolver->setAllowedTypes('host', 'string'); $resolver->setAllowedTypes('username', 'string'); $resolver->setAllowedTypes('password', 'string'); $resolver->setAllowedTypes('port', 'int'); }); } }
初始化
所有选项均通过验证
$options = [ 'host' => 'smtp.example.org', 'username' => 'user', 'password' => 'password', 'port' => 25, ]; $email = new Email($options); var_export($email);
Email::__set_state(array( 'options' => array ( 'host' => 'smtp.example.org', 'username' => 'user', 'password' => 'password', 'port' => 25, ), ))
选项验证失败
$options = [ 'host' => 'smtp.example.org', 'username' => 'user', 'password' => 'password', 'port' => '25', ]; $email = new Email($options); var_export($email);
PHP Fatal error: Uncaught Symfony\Component\OptionsResolver\Exception\InvalidOptionsException: The option "port" with value "25" is expected to be of type "int", but is of type "string". in /Users/yaozm/Downloads/options-resolver/vendor/symfony/options-resolver/OptionsResolver.php:1030
测试
$ composer test
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请查看 我们的安全策略 了解如何报告安全漏洞。
致谢
许可
MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。