ebidtech / options-resolver
An extension of Symfony's OptionsResolver component
Installs: 1 988
Dependents: 1
Suggesters: 0
Security: 0
Stars: 1
Watchers: 7
Forks: 0
Open Issues: 0
Requires
- php: >=5.4
- psr/log: ~1.0
- symfony/options-resolver: ~2.6|~3.0
Requires (Dev)
- nikic/php-parser: ~2.0
- phpunit/phpunit: ~5.0
- squizlabs/php_codesniffer: ~2.5
This package is not auto-updated.
Last update: 2024-11-20 23:51:47 UTC
README
This projects extends Symfony's OptionsResolver component, adding some useful features. For a list of all added features please see the Usage section of this readme.
Installation
The recommended way to install is through composer.
Just create a composer.json
file for your project:
{ "require": { "ebidtech/options-resolver": "1.*" } }
And run these two commands to install it:
$ curl -sS https://getcomposer.org/installer | php
$ composer install
Now you can add the autoloader, and you will have access to the library:
<?php require 'vendor/autoload.php';
Usage
This component is used exactly in the same way of the original component. For a good reference about the original component please see its documentation entry.
The component is used as follows:
// Original component instantiation, DON'T USE THIS. // $options = new \Symfony\Component\OptionsResolver\OptionsResolver(); // Extended component instantiation, USE THIS. $options = new EBT\OptionsResolver\Model\OptionsResolver\OptionsResolver();
Option type casting
It is often useful to use Symfony's OptionResolver when dealing with API arguments, deserialization results, etc. However, sometimes values are given as string representations of their original values, for example, "123" instead of 123. In this case setting the allowed type to "int" won't validate, because in reality the value is a string.
To address this problem two methods have been created setCast($option, $cast)
and isCast($option)
.
// Instantiates the options resolver and defines the option. $options = new EBT\OptionsResolver\Model\OptionsResolver\OptionsResolver(); $options->setDefined('my_option'); $options->isCast('my_option'); // false, cast not set // Marks "my_option" to be cast to bool. The cast will be applied before resolving the options. $options->setCast('my_option', 'bool'); $options->isCast('my_option'); // true, cast already set
Allowed cast types
Currently the following cast types are allowed:
- int
- float
- bool
If an unsupported type cast is set an exception will be thrown. When a cast is set but the given value is not castable to that specific type, the original value is kept, and any additional validations are applied as normal.
NOTE: Currently type casting is handled with PHP's filter_var() method
. For additional examples of how it converts specific cases please check the official documentation or this repository's tests.