Wouldn't it be easier and less error prone if we don't use an associative array? Let me explain. 

Say I define a CustomConstraintValidatorServiceProvider with a set of custom validators:
```php
public function register(Application $app)
{
    $app['validator.unique'] = $app->share(function ($app) {
        return new UniqueValidator($app['db']);
    });
    
    $app['validator.exists'] = $app->share(function ($app) {
        return new ExistsValidator($app['db']);
    });
}   
public function boot(Application $app) {}
```

In their respective Constraints the `validateBy()` method would use the same DI parameter defined above:

```php
public function validatedBy()
{
    return 'validator.exists';
}
```
So in my index.php I would register the `CustomConstraintValidatorServiceProvider` as well as register the built in `ValidatorServiceProvider` like so:

```php
$app->register(new CustomConstraintValidatorServiceProvider());
$app->register(new ValidatorServiceProvider(), array(
    'validator.validator_service_ids' => array(
        'validator.unique',
        'validator.exists'
    )
));
```

So the same DI parameter would be used throughout the lifecycle of a custom validator, even in the `ConstraintValidatorFactory` the same parameter name would be used.