From 256b7081a423caeb404c9ec838b6ee21cc7e5bab Mon Sep 17 00:00:00 2001 From: Bernhard Schussek Date: Thu, 10 May 2012 16:37:03 +0200 Subject: [PATCH] [OptionsParser] Renamed OptionsParser to OptionsResolver --- composer.json | 2 +- .../Doctrine/Form/Type/DoctrineType.php | 2 +- .../Bridge/Propel1/Form/Type/ModelType.php | 2 +- .../Form/Extension/Core/Type/ChoiceType.php | 2 +- .../Form/Extension/Core/Type/DateTimeType.php | 2 +- .../Form/Extension/Core/Type/DateType.php | 2 +- .../Form/Extension/Core/Type/FormType.php | 2 +- .../Form/Extension/Core/Type/TimeType.php | 2 +- .../Form/Extension/Core/Type/TimezoneType.php | 2 +- src/Symfony/Component/Form/FormFactory.php | 14 +-- .../Extension/Core/Type/DateTypeTest.php | 4 +- .../Component/Form/Tests/FormFactoryTest.php | 4 +- src/Symfony/Component/Form/composer.json | 2 +- .../Exception/ExceptionInterface.php | 2 +- .../Exception/InvalidOptionsException.php | 2 +- .../Exception/MissingOptionsException.php | 2 +- .../Exception/OptionDefinitionException.php | 2 +- .../LICENSE | 0 .../LazyOption.php | 2 +- .../Options.php | 4 +- .../OptionsResolver.php} | 20 +-- .../README.md | 49 ++++---- .../Tests/OptionResolverTest.php} | 118 +++++++++--------- .../Tests/OptionsTest.php | 10 +- .../Tests/bootstrap.php | 4 +- .../composer.json | 8 +- .../phpunit.xml.dist | 2 +- 27 files changed, 134 insertions(+), 133 deletions(-) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/Exception/ExceptionInterface.php (87%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/Exception/InvalidOptionsException.php (89%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/Exception/MissingOptionsException.php (89%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/Exception/OptionDefinitionException.php (88%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/LICENSE (100%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/LazyOption.php (97%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/Options.php (97%) rename src/Symfony/Component/{OptionsParser/OptionsParser.php => OptionsResolver/OptionsResolver.php} (93%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/README.md (61%) rename src/Symfony/Component/{OptionsParser/Tests/OptionParserTest.php => OptionsResolver/Tests/OptionResolverTest.php} (55%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/Tests/OptionsTest.php (91%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/Tests/bootstrap.php (82%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/composer.json (70%) rename src/Symfony/Component/{OptionsParser => OptionsResolver}/phpunit.xml.dist (91%) diff --git a/composer.json b/composer.json index c8d46114f8..cef5e7035d 100644 --- a/composer.json +++ b/composer.json @@ -42,7 +42,7 @@ "symfony/http-foundation": "self.version", "symfony/http-kernel": "self.version", "symfony/locale": "self.version", - "symfony/options-parser": "self.version", + "symfony/options-resolver": "self.version", "symfony/process": "self.version", "symfony/routing": "self.version", "symfony/security": "self.version", diff --git a/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php b/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php index 96582e66c4..c4b6b8a518 100644 --- a/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php +++ b/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php @@ -19,7 +19,7 @@ use Symfony\Bridge\Doctrine\Form\ChoiceList\EntityLoaderInterface; use Symfony\Bridge\Doctrine\Form\EventListener\MergeDoctrineCollectionListener; use Symfony\Bridge\Doctrine\Form\DataTransformer\CollectionToArrayTransformer; use Symfony\Component\Form\AbstractType; -use Symfony\Component\OptionsParser\Options; +use Symfony\Component\OptionsResolver\Options; abstract class DoctrineType extends AbstractType { diff --git a/src/Symfony/Bridge/Propel1/Form/Type/ModelType.php b/src/Symfony/Bridge/Propel1/Form/Type/ModelType.php index 4c57c42b55..3e2c7b4f78 100644 --- a/src/Symfony/Bridge/Propel1/Form/Type/ModelType.php +++ b/src/Symfony/Bridge/Propel1/Form/Type/ModelType.php @@ -15,7 +15,7 @@ use Symfony\Bridge\Propel1\Form\ChoiceList\ModelChoiceList; use Symfony\Bridge\Propel1\Form\DataTransformer\CollectionToArrayTransformer; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilder; -use Symfony\Component\OptionsParser\Options; +use Symfony\Component\OptionsResolver\Options; /** * ModelType class. diff --git a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php index 6bfc8cbbcd..f5991a9bbc 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/ChoiceType.php @@ -26,7 +26,7 @@ use Symfony\Component\Form\Extension\Core\DataTransformer\ChoiceToValueTransform use Symfony\Component\Form\Extension\Core\DataTransformer\ChoiceToBooleanArrayTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\ChoicesToValuesTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\ChoicesToBooleanArrayTransformer; -use Symfony\Component\OptionsParser\Options; +use Symfony\Component\OptionsResolver\Options; class ChoiceType extends AbstractType { diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php index 1d8387d54b..d3d37fa442 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/DateTimeType.php @@ -21,7 +21,7 @@ use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransfo use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\ArrayToPartsTransformer; -use Symfony\Component\OptionsParser\Options; +use Symfony\Component\OptionsResolver\Options; class DateTimeType extends AbstractType { diff --git a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php index 91dfa3c3d4..dbc63b1c28 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/DateType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/DateType.php @@ -22,7 +22,7 @@ use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransfo use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer; use Symfony\Component\Form\ReversedTransformer; -use Symfony\Component\OptionsParser\Options; +use Symfony\Component\OptionsResolver\Options; class DateType extends AbstractType { diff --git a/src/Symfony/Component/Form/Extension/Core/Type/FormType.php b/src/Symfony/Component/Form/Extension/Core/Type/FormType.php index c9936e2f71..a00524af19 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/FormType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/FormType.php @@ -22,7 +22,7 @@ use Symfony\Component\Form\Extension\Core\EventListener\ValidationListener; use Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper; use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\Form\Exception\FormException; -use Symfony\Component\OptionsParser\Options; +use Symfony\Component\OptionsResolver\Options; class FormType extends AbstractType { diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php index 5d1fef8a3e..1d263c3850 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TimeType.php @@ -20,7 +20,7 @@ use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToStringTransf use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToTimestampTransformer; use Symfony\Component\Form\Extension\Core\DataTransformer\DateTimeToArrayTransformer; use Symfony\Component\Form\FormView; -use Symfony\Component\OptionsParser\Options; +use Symfony\Component\OptionsResolver\Options; class TimeType extends AbstractType { diff --git a/src/Symfony/Component/Form/Extension/Core/Type/TimezoneType.php b/src/Symfony/Component/Form/Extension/Core/Type/TimezoneType.php index c3eb421e44..61e7afdaf8 100644 --- a/src/Symfony/Component/Form/Extension/Core/Type/TimezoneType.php +++ b/src/Symfony/Component/Form/Extension/Core/Type/TimezoneType.php @@ -13,7 +13,7 @@ namespace Symfony\Component\Form\Extension\Core\Type; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\ChoiceList\ChoiceList; -use Symfony\Component\OptionsParser\Options; +use Symfony\Component\OptionsResolver\Options; class TimezoneType extends AbstractType { diff --git a/src/Symfony/Component/Form/FormFactory.php b/src/Symfony/Component/Form/FormFactory.php index ee7ddb9170..5b75795e78 100644 --- a/src/Symfony/Component/Form/FormFactory.php +++ b/src/Symfony/Component/Form/FormFactory.php @@ -14,7 +14,7 @@ namespace Symfony\Component\Form; use Symfony\Component\Form\Exception\FormException; use Symfony\Component\Form\Exception\UnexpectedTypeException; use Symfony\Component\Form\Exception\TypeDefinitionException; -use Symfony\Component\OptionsParser\OptionsParser; +use Symfony\Component\OptionsResolver\OptionsResolver; class FormFactory implements FormFactoryInterface { @@ -221,7 +221,7 @@ class FormFactory implements FormFactoryInterface $types = array(); $optionValues = array(); $knownOptions = array(); - $optionsParser = new OptionsParser(); + $optionsResolver = new OptionsResolver(); // Bottom-up determination of the type hierarchy // Start with the actual type and look for the parent type @@ -255,14 +255,14 @@ class FormFactory implements FormFactoryInterface // options. Default options of children override default options // of parents. $typeOptions = $type->getDefaultOptions(); - $optionsParser->setDefaults($typeOptions); - $optionsParser->addAllowedValues($type->getAllowedOptionValues()); + $optionsResolver->setDefaults($typeOptions); + $optionsResolver->addAllowedValues($type->getAllowedOptionValues()); $knownOptions = array_merge($knownOptions, array_keys($typeOptions)); foreach ($type->getExtensions() as $typeExtension) { $extensionOptions = $typeExtension->getDefaultOptions(); - $optionsParser->setDefaults($extensionOptions); - $optionsParser->addAllowedValues($typeExtension->getAllowedOptionValues()); + $optionsResolver->setDefaults($extensionOptions); + $optionsResolver->addAllowedValues($typeExtension->getAllowedOptionValues()); $knownOptions = array_merge($knownOptions, array_keys($extensionOptions)); } } @@ -278,7 +278,7 @@ class FormFactory implements FormFactoryInterface } // Resolve options - $options = $optionsParser->parse($options); + $options = $optionsResolver->resolve($options); for ($i = 0, $l = count($types); $i < $l && !$builder; ++$i) { $builder = $types[$i]->createBuilder($name, $this, $options); diff --git a/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php b/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php index a371099eb8..41aaf6b953 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Core/Type/DateTypeTest.php @@ -23,7 +23,7 @@ class DateTypeTest extends LocalizedTestCase } /** - * @expectedException Symfony\Component\OptionsParser\Exception\InvalidOptionsException + * @expectedException Symfony\Component\OptionsResolver\Exception\InvalidOptionsException */ public function testInvalidWidgetOption() { @@ -33,7 +33,7 @@ class DateTypeTest extends LocalizedTestCase } /** - * @expectedException Symfony\Component\OptionsParser\Exception\InvalidOptionsException + * @expectedException Symfony\Component\OptionsResolver\Exception\InvalidOptionsException */ public function testInvalidInputOption() { diff --git a/src/Symfony/Component/Form/Tests/FormFactoryTest.php b/src/Symfony/Component/Form/Tests/FormFactoryTest.php index 742a940d4b..40c5137df4 100644 --- a/src/Symfony/Component/Form/Tests/FormFactoryTest.php +++ b/src/Symfony/Component/Form/Tests/FormFactoryTest.php @@ -279,7 +279,7 @@ class FormFactoryTest extends \PHPUnit_Framework_TestCase } /** - * @expectedException Symfony\Component\OptionsParser\Exception\InvalidOptionsException + * @expectedException Symfony\Component\OptionsResolver\Exception\InvalidOptionsException */ public function testCreateNamedBuilderExpectsOptionsToExist() { @@ -292,7 +292,7 @@ class FormFactoryTest extends \PHPUnit_Framework_TestCase } /** - * @expectedException Symfony\Component\OptionsParser\Exception\InvalidOptionsException + * @expectedException Symfony\Component\OptionsResolver\Exception\InvalidOptionsException */ public function testCreateNamedBuilderExpectsOptionsToBeInValidRange() { diff --git a/src/Symfony/Component/Form/composer.json b/src/Symfony/Component/Form/composer.json index 888eef4ec4..d02b335fa9 100644 --- a/src/Symfony/Component/Form/composer.json +++ b/src/Symfony/Component/Form/composer.json @@ -19,7 +19,7 @@ "php": ">=5.3.3", "symfony/event-dispatcher": "2.1.*", "symfony/locale": "2.1.*", - "symfony/options-parser": "2.1.*" + "symfony/options-resolver": "2.1.*" }, "require-dev": { "symfony/validator": "2.1.*", diff --git a/src/Symfony/Component/OptionsParser/Exception/ExceptionInterface.php b/src/Symfony/Component/OptionsResolver/Exception/ExceptionInterface.php similarity index 87% rename from src/Symfony/Component/OptionsParser/Exception/ExceptionInterface.php rename to src/Symfony/Component/OptionsResolver/Exception/ExceptionInterface.php index 79bc34fde7..4224f4e3e9 100755 --- a/src/Symfony/Component/OptionsParser/Exception/ExceptionInterface.php +++ b/src/Symfony/Component/OptionsResolver/Exception/ExceptionInterface.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\OptionsParser\Exception; +namespace Symfony\Component\OptionsResolver\Exception; /** * Marker interface for the Options component. diff --git a/src/Symfony/Component/OptionsParser/Exception/InvalidOptionsException.php b/src/Symfony/Component/OptionsResolver/Exception/InvalidOptionsException.php similarity index 89% rename from src/Symfony/Component/OptionsParser/Exception/InvalidOptionsException.php rename to src/Symfony/Component/OptionsResolver/Exception/InvalidOptionsException.php index 24454d8c77..2e7ea1bc0c 100644 --- a/src/Symfony/Component/OptionsParser/Exception/InvalidOptionsException.php +++ b/src/Symfony/Component/OptionsResolver/Exception/InvalidOptionsException.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\OptionsParser\Exception; +namespace Symfony\Component\OptionsResolver\Exception; /** * Exception thrown when an invalid option is passed. diff --git a/src/Symfony/Component/OptionsParser/Exception/MissingOptionsException.php b/src/Symfony/Component/OptionsResolver/Exception/MissingOptionsException.php similarity index 89% rename from src/Symfony/Component/OptionsParser/Exception/MissingOptionsException.php rename to src/Symfony/Component/OptionsResolver/Exception/MissingOptionsException.php index 3afb54dfc2..8544dfb2ee 100644 --- a/src/Symfony/Component/OptionsParser/Exception/MissingOptionsException.php +++ b/src/Symfony/Component/OptionsResolver/Exception/MissingOptionsException.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\OptionsParser\Exception; +namespace Symfony\Component\OptionsResolver\Exception; /** * Exception thrown when a required option is missing. diff --git a/src/Symfony/Component/OptionsParser/Exception/OptionDefinitionException.php b/src/Symfony/Component/OptionsResolver/Exception/OptionDefinitionException.php similarity index 88% rename from src/Symfony/Component/OptionsParser/Exception/OptionDefinitionException.php rename to src/Symfony/Component/OptionsResolver/Exception/OptionDefinitionException.php index 34d317f720..11617fe1a1 100644 --- a/src/Symfony/Component/OptionsParser/Exception/OptionDefinitionException.php +++ b/src/Symfony/Component/OptionsResolver/Exception/OptionDefinitionException.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\OptionsParser\Exception; +namespace Symfony\Component\OptionsResolver\Exception; /** * Thrown when an option definition is invalid. diff --git a/src/Symfony/Component/OptionsParser/LICENSE b/src/Symfony/Component/OptionsResolver/LICENSE similarity index 100% rename from src/Symfony/Component/OptionsParser/LICENSE rename to src/Symfony/Component/OptionsResolver/LICENSE diff --git a/src/Symfony/Component/OptionsParser/LazyOption.php b/src/Symfony/Component/OptionsResolver/LazyOption.php similarity index 97% rename from src/Symfony/Component/OptionsParser/LazyOption.php rename to src/Symfony/Component/OptionsResolver/LazyOption.php index 8d935fdf0a..ba1fd8219c 100644 --- a/src/Symfony/Component/OptionsParser/LazyOption.php +++ b/src/Symfony/Component/OptionsResolver/LazyOption.php @@ -9,7 +9,7 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\OptionsParser; +namespace Symfony\Component\OptionsResolver; use Closure; diff --git a/src/Symfony/Component/OptionsParser/Options.php b/src/Symfony/Component/OptionsResolver/Options.php similarity index 97% rename from src/Symfony/Component/OptionsParser/Options.php rename to src/Symfony/Component/OptionsResolver/Options.php index 956616e34e..78ebf30535 100644 --- a/src/Symfony/Component/OptionsParser/Options.php +++ b/src/Symfony/Component/OptionsResolver/Options.php @@ -9,12 +9,12 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\OptionsParser; +namespace Symfony\Component\OptionsResolver; use ArrayAccess; use Iterator; use OutOfBoundsException; -use Symfony\Component\OptionsParser\Exception\OptionDefinitionException; +use Symfony\Component\OptionsResolver\Exception\OptionDefinitionException; /** * Container for resolving inter-dependent options. diff --git a/src/Symfony/Component/OptionsParser/OptionsParser.php b/src/Symfony/Component/OptionsResolver/OptionsResolver.php similarity index 93% rename from src/Symfony/Component/OptionsParser/OptionsParser.php rename to src/Symfony/Component/OptionsResolver/OptionsResolver.php index 444994ee1b..2f4d8d2031 100644 --- a/src/Symfony/Component/OptionsParser/OptionsParser.php +++ b/src/Symfony/Component/OptionsResolver/OptionsResolver.php @@ -9,18 +9,18 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\OptionsParser; +namespace Symfony\Component\OptionsResolver; -use Symfony\Component\OptionsParser\Exception\OptionDefinitionException; -use Symfony\Component\OptionsParser\Exception\InvalidOptionsException; -use Symfony\Component\OptionsParser\Exception\MissingOptionsException; +use Symfony\Component\OptionsResolver\Exception\OptionDefinitionException; +use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException; +use Symfony\Component\OptionsResolver\Exception\MissingOptionsException; /** * Helper for merging default and concrete option values. * * @author Bernhard Schussek */ -class OptionsParser +class OptionsResolver { /** * The default option values. @@ -29,13 +29,13 @@ class OptionsParser private $defaultOptions; /** - * The options known by the parser. + * The options known by the resolver. * @var array */ private $knownOptions = array(); /** - * The options required to be passed to parse(). + * The options required to be passed to resolve(). * @var array */ private $requiredOptions = array(); @@ -100,7 +100,7 @@ class OptionsParser * * This method is identical to `setDefaults`, only that no default values * are configured for the options. If these options are not passed to - * parse(), they will be missing in the final options array. This can be + * resolve(), they will be missing in the final options array. This can be * helpful if you want to determine whether an option has been set or not. * * @param array $optionNames A list of option names. @@ -121,7 +121,7 @@ class OptionsParser /** * Sets required options. * - * If these options are not passed to parse(), an exception will be thrown. + * If these options are not passed to resolve(), an exception will be thrown. * * @param array $optionNames A list of option names. * @@ -189,7 +189,7 @@ class OptionsParser * @throws OptionDefinitionException If a cyclic dependency is detected * between two lazy options. */ - public function parse(array $options) + public function resolve(array $options) { $this->validateOptionNames(array_keys($options)); diff --git a/src/Symfony/Component/OptionsParser/README.md b/src/Symfony/Component/OptionsResolver/README.md similarity index 61% rename from src/Symfony/Component/OptionsParser/README.md rename to src/Symfony/Component/OptionsResolver/README.md index 6ae6920bb0..5e0f08ce45 100644 --- a/src/Symfony/Component/OptionsParser/README.md +++ b/src/Symfony/Component/OptionsResolver/README.md @@ -1,19 +1,19 @@ -OptionsParser Component +OptionsResolver Component ====================== -OptionsParser helps to configure objects with option arrays. +OptionsResolver helps at configuring objects with option arrays. It supports default values on different levels of your class hierarchy, -required options and lazy options where the default value depends on the -concrete value of a different option. +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. +possible, and may only be one of "male" and "female". - use Symfony\Component\OptionsParser\OptionsParser; - use Symfony\Component\OptionsParser\Options; + use Symfony\Component\OptionsResolver\OptionsResolver; + use Symfony\Component\OptionsResolver\Options; class Person { @@ -21,21 +21,20 @@ possible. public function __construct(array $options = array()) { - $parser = new OptionsParser(); - $this->setOptions($parser); + $resolver = new OptionsResolver(); + $this->configureOptions($resolver); - $this->options = $parser->parse($options); + $this->options = $resolver->resolve($options); } - protected function setOptions(OptionsParser $parser) + protected function configure(OptionsResolver $resolver) { - $parser->setRequired(array( + $resolver->setRequired(array( 'firstName', 'lastName', - 'age', )); - $parser->setDefaults(array( + $resolver->setDefaults(array( 'age' => null, 'gender' => function (Options $options) { if (self::isKnownMaleName($options['firstName'])) { @@ -46,7 +45,7 @@ possible. }, )); - $parser->setAllowedValues(array( + $resolver->setAllowedValues(array( 'gender' => array('male', 'female'), )); } @@ -69,35 +68,37 @@ We can also override the default values of the optional options: 'age' => 30, )); -Options can be added or changed in subclasses by overriding the `setOptions` +Options can be added or changed in subclasses by overriding the `configure` method: - use Symfony\Component\OptionsParser\OptionsParser; - use Symfony\Component\OptionsParser\Options; + use Symfony\Component\OptionsResolver\OptionsResolver; + use Symfony\Component\OptionsResolver\Options; class Employee extends Person { - protected function setOptions(OptionsParser $parser) + protected function configure(OptionsResolver $resolver) { - parent::setOptions($parser); + parent::configure($resolver); - $parser->setRequired(array( + $resolver->setRequired(array( 'birthDate', )); - $parser->setDefaults(array( + $resolver->setDefaults(array( // $previousValue contains the default value configured in the // parent class 'age' => function (Options $options, $previousValue) { - return self::configureAgeFromBirthDate($options['birthDate']); + return self::calculateAge($options['birthDate']); } )); } } + + Resources --------- You can run the unit tests with the following command: - phpunit -c src/Symfony/Component/OptionsParser/ \ No newline at end of file + phpunit diff --git a/src/Symfony/Component/OptionsParser/Tests/OptionParserTest.php b/src/Symfony/Component/OptionsResolver/Tests/OptionResolverTest.php similarity index 55% rename from src/Symfony/Component/OptionsParser/Tests/OptionParserTest.php rename to src/Symfony/Component/OptionsResolver/Tests/OptionResolverTest.php index 70740e629f..c3acc6ceb3 100644 --- a/src/Symfony/Component/OptionsParser/Tests/OptionParserTest.php +++ b/src/Symfony/Component/OptionsResolver/Tests/OptionResolverTest.php @@ -9,23 +9,23 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\OptionsParser\Tests; +namespace Symfony\Component\OptionsResolver\Tests; -use Symfony\Component\OptionsParser\OptionsParser; -use Symfony\Component\OptionsParser\Options; +use Symfony\Component\OptionsResolver\OptionsResolver; +use Symfony\Component\OptionsResolver\Options; -class OptionsParserTest extends \PHPUnit_Framework_TestCase +class OptionsResolverTest extends \PHPUnit_Framework_TestCase { private $options; protected function setUp() { - $this->parser = new OptionsParser(); + $this->resolver = new OptionsResolver(); } - public function testParse() + public function testResolve() { - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'one' => '1', 'two' => '2', )); @@ -37,12 +37,12 @@ class OptionsParserTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array( 'one' => '1', 'two' => '20', - ), $this->parser->parse($options)); + ), $this->resolver->resolve($options)); } - public function testParseLazy() + public function testResolveLazy() { - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'one' => '1', 'two' => function (Options $options) { return '20'; @@ -52,12 +52,12 @@ class OptionsParserTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array( 'one' => '1', 'two' => '20', - ), $this->parser->parse(array())); + ), $this->resolver->resolve(array())); } - public function testParseLazyDependencyOnOptional() + public function testResolveLazyDependencyOnOptional() { - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'one' => '1', 'two' => function (Options $options) { return $options['one'] . '2'; @@ -71,18 +71,18 @@ class OptionsParserTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array( 'one' => '10', 'two' => '102', - ), $this->parser->parse($options)); + ), $this->resolver->resolve($options)); } - public function testParseLazyDependencyOnMissingOptionalWithoutDefault() + public function testResolveLazyDependencyOnMissingOptionalWithoutDefault() { $test = $this; - $this->parser->setOptional(array( + $this->resolver->setOptional(array( 'one', )); - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'two' => function (Options $options) use ($test) { $test->assertFalse(isset($options['one'])); @@ -95,18 +95,18 @@ class OptionsParserTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array( 'two' => '2', - ), $this->parser->parse($options)); + ), $this->resolver->resolve($options)); } - public function testParseLazyDependencyOnOptionalWithoutDefault() + public function testResolveLazyDependencyOnOptionalWithoutDefault() { $test = $this; - $this->parser->setOptional(array( + $this->resolver->setOptional(array( 'one', )); - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'two' => function (Options $options) use ($test) { $test->assertTrue(isset($options['one'])); @@ -121,15 +121,15 @@ class OptionsParserTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array( 'one' => '10', 'two' => '102', - ), $this->parser->parse($options)); + ), $this->resolver->resolve($options)); } - public function testParseLazyDependencyOnRequired() + public function testResolveLazyDependencyOnRequired() { - $this->parser->setRequired(array( + $this->resolver->setRequired(array( 'one', )); - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'two' => function (Options $options) { return $options['one'] . '2'; }, @@ -142,20 +142,20 @@ class OptionsParserTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array( 'one' => '10', 'two' => '102', - ), $this->parser->parse($options)); + ), $this->resolver->resolve($options)); } - public function testParseLazyReplaceDefaults() + public function testResolveLazyReplaceDefaults() { $test = $this; - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'one' => function (Options $options) use ($test) { $test->fail('Previous closure should not be executed'); }, )); - $this->parser->replaceDefaults(array( + $this->resolver->replaceDefaults(array( 'one' => function (Options $options, $previousValue) { return '1'; }, @@ -163,56 +163,56 @@ class OptionsParserTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array( 'one' => '1', - ), $this->parser->parse(array())); + ), $this->resolver->resolve(array())); } /** - * @expectedException Symfony\Component\OptionsParser\Exception\InvalidOptionsException + * @expectedException Symfony\Component\OptionsResolver\Exception\InvalidOptionsException */ - public function testParseFailsIfNonExistingOption() + public function testResolveFailsIfNonExistingOption() { - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'one' => '1', )); - $this->parser->setRequired(array( + $this->resolver->setRequired(array( 'two', )); - $this->parser->setOptional(array( + $this->resolver->setOptional(array( 'three', )); - $this->parser->parse(array( + $this->resolver->resolve(array( 'foo' => 'bar', )); } /** - * @expectedException Symfony\Component\OptionsParser\Exception\MissingOptionsException + * @expectedException Symfony\Component\OptionsResolver\Exception\MissingOptionsException */ - public function testParseFailsIfMissingRequiredOption() + public function testResolveFailsIfMissingRequiredOption() { - $this->parser->setRequired(array( + $this->resolver->setRequired(array( 'one', )); - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'two' => '2', )); - $this->parser->parse(array( + $this->resolver->resolve(array( 'two' => '20', )); } - public function testParseSucceedsIfOptionValueAllowed() + public function testResolveSucceedsIfOptionValueAllowed() { - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'one' => '1', )); - $this->parser->setAllowedValues(array( + $this->resolver->setAllowedValues(array( 'one' => array('1', 'one'), )); @@ -222,21 +222,21 @@ class OptionsParserTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array( 'one' => 'one', - ), $this->parser->parse($options)); + ), $this->resolver->resolve($options)); } - public function testParseSucceedsIfOptionValueAllowed2() + public function testResolveSucceedsIfOptionValueAllowed2() { - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'one' => '1', 'two' => '2', )); - $this->parser->addAllowedValues(array( + $this->resolver->addAllowedValues(array( 'one' => array('1'), 'two' => array('2'), )); - $this->parser->addAllowedValues(array( + $this->resolver->addAllowedValues(array( 'one' => array('one'), 'two' => array('two'), )); @@ -249,43 +249,43 @@ class OptionsParserTest extends \PHPUnit_Framework_TestCase $this->assertEquals(array( 'one' => '1', 'two' => 'two', - ), $this->parser->parse($options)); + ), $this->resolver->resolve($options)); } /** - * @expectedException Symfony\Component\OptionsParser\Exception\InvalidOptionsException + * @expectedException Symfony\Component\OptionsResolver\Exception\InvalidOptionsException */ - public function testParseFailsIfOptionValueNotAllowed() + public function testResolveFailsIfOptionValueNotAllowed() { - $this->parser->setDefaults(array( + $this->resolver->setDefaults(array( 'one' => '1', )); - $this->parser->setAllowedValues(array( + $this->resolver->setAllowedValues(array( 'one' => array('1', 'one'), )); - $this->parser->parse(array( + $this->resolver->resolve(array( 'one' => '2', )); } /** - * @expectedException Symfony\Component\OptionsParser\Exception\OptionDefinitionException + * @expectedException Symfony\Component\OptionsResolver\Exception\OptionDefinitionException */ public function testSetRequiredFailsIfDefaultIsPassed() { - $this->parser->setRequired(array( + $this->resolver->setRequired(array( 'one' => '1', )); } /** - * @expectedException Symfony\Component\OptionsParser\Exception\OptionDefinitionException + * @expectedException Symfony\Component\OptionsResolver\Exception\OptionDefinitionException */ public function testSetOptionalFailsIfDefaultIsPassed() { - $this->parser->setOptional(array( + $this->resolver->setOptional(array( 'one' => '1', )); } diff --git a/src/Symfony/Component/OptionsParser/Tests/OptionsTest.php b/src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php similarity index 91% rename from src/Symfony/Component/OptionsParser/Tests/OptionsTest.php rename to src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php index 058a738369..f1c70acc0f 100644 --- a/src/Symfony/Component/OptionsParser/Tests/OptionsTest.php +++ b/src/Symfony/Component/OptionsResolver/Tests/OptionsTest.php @@ -9,9 +9,9 @@ * file that was distributed with this source code. */ -namespace Symfony\Component\OptionsParser\Tests; +namespace Symfony\Component\OptionsResolver\Tests; -use Symfony\Component\OptionsParser\Options; +use Symfony\Component\OptionsResolver\Options; class OptionsTest extends \PHPUnit_Framework_TestCase { @@ -50,7 +50,7 @@ class OptionsTest extends \PHPUnit_Framework_TestCase } /** - * @expectedException Symfony\Component\OptionsParser\Exception\OptionDefinitionException + * @expectedException Symfony\Component\OptionsResolver\Exception\OptionDefinitionException */ public function testSetNotSupportedAfterGet() { @@ -60,7 +60,7 @@ class OptionsTest extends \PHPUnit_Framework_TestCase } /** - * @expectedException Symfony\Component\OptionsParser\Exception\OptionDefinitionException + * @expectedException Symfony\Component\OptionsResolver\Exception\OptionDefinitionException */ public function testUnsetNotSupportedAfterGet() { @@ -151,7 +151,7 @@ class OptionsTest extends \PHPUnit_Framework_TestCase } /** - * @expectedException Symfony\Component\OptionsParser\Exception\OptionDefinitionException + * @expectedException Symfony\Component\OptionsResolver\Exception\OptionDefinitionException */ public function testLazyOptionDisallowCyclicDependencies() { diff --git a/src/Symfony/Component/OptionsParser/Tests/bootstrap.php b/src/Symfony/Component/OptionsResolver/Tests/bootstrap.php similarity index 82% rename from src/Symfony/Component/OptionsParser/Tests/bootstrap.php rename to src/Symfony/Component/OptionsResolver/Tests/bootstrap.php index 547252172d..328ecb2d1e 100644 --- a/src/Symfony/Component/OptionsParser/Tests/bootstrap.php +++ b/src/Symfony/Component/OptionsResolver/Tests/bootstrap.php @@ -10,8 +10,8 @@ */ spl_autoload_register(function ($class) { - if (0 === strpos(ltrim($class, '/'), 'Symfony\Component\OptionsParser')) { - if (file_exists($file = __DIR__.'/../'.substr(str_replace('\\', '/', $class), strlen('Symfony\Component\OptionsParser')).'.php')) { + if (0 === strpos(ltrim($class, '/'), 'Symfony\Component\OptionsResolver')) { + if (file_exists($file = __DIR__.'/../'.substr(str_replace('\\', '/', $class), strlen('Symfony\Component\OptionsResolver')).'.php')) { require_once $file; } } diff --git a/src/Symfony/Component/OptionsParser/composer.json b/src/Symfony/Component/OptionsResolver/composer.json similarity index 70% rename from src/Symfony/Component/OptionsParser/composer.json rename to src/Symfony/Component/OptionsResolver/composer.json index 6ea87546f9..bd74964548 100644 --- a/src/Symfony/Component/OptionsParser/composer.json +++ b/src/Symfony/Component/OptionsResolver/composer.json @@ -1,7 +1,7 @@ { - "name": "symfony/options-parser", + "name": "symfony/options-resolver", "type": "library", - "description": "Symfony OptionsParser Component", + "description": "Symfony OptionsResolver Component", "keywords": [], "homepage": "http://symfony.com", "license": "MIT", @@ -19,9 +19,9 @@ "php": ">=5.3.2" }, "autoload": { - "psr-0": { "Symfony\\Component\\OptionsParser": "" } + "psr-0": { "Symfony\\Component\\OptionsResolver": "" } }, - "target-dir": "Symfony/Component/OptionsParser", + "target-dir": "Symfony/Component/OptionsResolver", "extra": { "branch-alias": { "dev-master": "2.1-dev" diff --git a/src/Symfony/Component/OptionsParser/phpunit.xml.dist b/src/Symfony/Component/OptionsResolver/phpunit.xml.dist similarity index 91% rename from src/Symfony/Component/OptionsParser/phpunit.xml.dist rename to src/Symfony/Component/OptionsResolver/phpunit.xml.dist index a10fc7a8df..639bb3fbc6 100644 --- a/src/Symfony/Component/OptionsParser/phpunit.xml.dist +++ b/src/Symfony/Component/OptionsResolver/phpunit.xml.dist @@ -12,7 +12,7 @@ bootstrap="Tests/bootstrap.php" > - + ./Tests/