Commit 70c1e365 authored by alexkappa's avatar alexkappa

Registering a ValidatorServiceProvider can take a...

Registering a ValidatorServiceProvider can take a validator.validator_service_ids parameter which is now an associative array of aliases as keys and service names as values so that ConstraintValidatorFactory can lazy load the validators.
parent 77af56be
...@@ -49,10 +49,10 @@ class ConstraintValidatorFactory implements ConstraintValidatorFactoryInterface ...@@ -49,10 +49,10 @@ class ConstraintValidatorFactory implements ConstraintValidatorFactoryInterface
{ {
$name = $constraint->validatedBy(); $name = $constraint->validatedBy();
if (!in_array($name, $this->validators)) { if (!isset($this->validators[$name])) {
$this->validators[$name] = new $name(); $this->validators[$name] = new $name();
} else { } elseif (!is_object($this->validators[$name])) {
$this->validators[$name] = $this->container[$name]; $this->validators[$name] = $this->container[$this->validators[$name]];
} }
return $this->validators[$name]; return $this->validators[$name];
......
...@@ -61,8 +61,8 @@ class ValidatorServiceProvider implements ServiceProviderInterface ...@@ -61,8 +61,8 @@ class ValidatorServiceProvider implements ServiceProviderInterface
$app['validator.validator_factory'] = $app->share(function() use ($app) { $app['validator.validator_factory'] = $app->share(function() use ($app) {
$validators = array(); $validators = array();
if (isset($app['validator.validator_service_ids'])) { if (isset($app['validator.validator_service_ids'])) {
foreach ($app['validator.validator_service_ids'] as $service) { foreach ($app['validator.validator_service_ids'] as $alias => $service) {
$validators[] = $service; $validators[$alias] = $service;
} }
} }
return new ConstraintValidatorFactory($app, $validators); return new ConstraintValidatorFactory($app, $validators);
......
...@@ -49,8 +49,8 @@ class ValidatorServiceProviderTest extends \PHPUnit_Framework_TestCase ...@@ -49,8 +49,8 @@ class ValidatorServiceProviderTest extends \PHPUnit_Framework_TestCase
$app->register(new ValidatorServiceProvider(), array( $app->register(new ValidatorServiceProvider(), array(
'validator.validator_service_ids' => array( 'validator.validator_service_ids' => array(
'validator.x', 'alias_x' => 'validator.x',
'validator.y' 'alias_y' => 'validator.y'
) )
)); ));
...@@ -60,7 +60,7 @@ class ValidatorServiceProviderTest extends \PHPUnit_Framework_TestCase ...@@ -60,7 +60,7 @@ class ValidatorServiceProviderTest extends \PHPUnit_Framework_TestCase
/** /**
* @depends testRegisterWithCustomValidators * @depends testRegisterWithCustomValidators
*/ */
public function testSilexConstraintValidatorFactory($app) public function testConstraintValidatorFactory($app)
{ {
$this->assertInstanceOf('Silex\ConstraintValidatorFactory', $app['validator.validator_factory']); $this->assertInstanceOf('Silex\ConstraintValidatorFactory', $app['validator.validator_factory']);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment