private function validateFactory(Definition $definition)
{
if (method_exists($definition, 'getFactoryClass')) {
// Symfony <= 3.0.0
$factoryClass = $definition->getFactoryClass(false);
if ($factoryClass) {
$this->validateFactoryClassAndMethod($factoryClass, $definition->getFactoryMethod(false));
}
}
if (method_exists($definition, 'getFactoryService')) {
$factoryService = $definition->getFactoryService(false);
if ($factoryService) {
$this->validateFactoryServiceAndMethod($factoryService, $definition->getFactoryMethod(false));
}
}
if (method_exists($definition, 'getFactory')) {
$factory = $definition->getFactory();
if (!is_array($factory) || count($factory) !== 2) {
return;
}
list($factoryClassOrService, $method) = $factory;
if (is_string($factoryClassOrService)) {
$this->validateFactoryClassAndMethod($factoryClassOrService, $method);
} elseif ($factoryClassOrService instanceof Definition) {
$this->validateFactoryServiceDefinitionAndMethod($factoryClassOrService, $method);
} else {
$this->validateFactoryServiceAndMethod((string) $factoryClassOrService, $method);
}
}
}