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
{
$name = $constraint->validatedBy();
if (!in_array($name, $this->validators)) {
if (!isset($this->validators[$name])) {
$this->validators[$name] = new $name();
} else {
$this->validators[$name] = $this->container[$name];
} elseif (!is_object($this->validators[$name])) {
$this->validators[$name] = $this->container[$this->validators[$name]];
}
return $this->validators[$name];
......
......@@ -61,8 +61,8 @@ class ValidatorServiceProvider implements ServiceProviderInterface
$app['validator.validator_factory'] = $app->share(function() use ($app) {
$validators = array();
if (isset($app['validator.validator_service_ids'])) {
foreach ($app['validator.validator_service_ids'] as $service) {
$validators[] = $service;
foreach ($app['validator.validator_service_ids'] as $alias => $service) {
$validators[$alias] = $service;
}
}
return new ConstraintValidatorFactory($app, $validators);
......
......@@ -49,8 +49,8 @@ class ValidatorServiceProviderTest extends \PHPUnit_Framework_TestCase
$app->register(new ValidatorServiceProvider(), array(
'validator.validator_service_ids' => array(
'validator.x',
'validator.y'
'alias_x' => 'validator.x',
'alias_y' => 'validator.y'
)
));
......@@ -60,7 +60,7 @@ class ValidatorServiceProviderTest extends \PHPUnit_Framework_TestCase
/**
* @depends testRegisterWithCustomValidators
*/
public function testSilexConstraintValidatorFactory($app)
public function testConstraintValidatorFactory($app)
{
$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