<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
matthiasnoback / symfony-service-definition-validator example snippets
use Matthias\SymfonyServiceDefinitionValidator\ServiceDefinitionValidatorFactory;
// an instance of Symfony\Component\DependencyInjection\ContainerBuilder
$containerBuilder = ...;
$validatorFactory = new ServiceDefinitionValidatorFactory();
$validator = $validatorFactory->create($containerBuilder);
// an instance of Symfony\Component\DependencyInjection\Definition
$definition = ...;
// will throw an exception for any validation error
$validator->validate($definition);
use Matthias\SymfonyServiceDefinitionValidator\BatchServiceDefinitionValidator;
use Matthias\SymfonyServiceDefinitionValidator\Error\ValidationErrorFactory;
$batchValidator = new BatchServiceDefinitionValidator(
$validator,
new ValidationErrorFactory()
);
$errorList = $batchValidator->validate($serviceDefinitions);
use Matthias\SymfonyServiceDefinitionValidator\Compiler\ValidateServiceDefinitionsPass;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Compiler\PassConfig;
class SomeBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
if ($container->getParameter('kernel.debug')) {
$container->addCompilerPass(
new ValidateServiceDefinitionsPass(),
PassConfig::TYPE_AFTER_REMOVING
);
}
}
}
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
class ContainerServiceDefinitionsTest extends WebTestCase
{
/**
* @test
*/
public function validateServiceDefinitions()
{
$kernel = static::createKernel();
$kernel->boot();
// Add assertion to phpunit count which will prevent marking test as "risky"
$this->addToAssertionCount(1);
}
}
use Matthias\SymfonyServiceDefinitionValidator\Configuration;
use Matthias\SymfonyServiceDefinitionValidator\Compiler\ValidateServiceDefinitionsPass;
$configuration = new Configuration();
$configuration->setEvaluateExpressions(true);
$compilerPass = new ValidateServiceDefinitionsPass($configuration);
// or
$validatorFactory = new ServiceDefinitionValidatorFactory($configuration);
namespace YourBundle\DependencyInjection\Compiler;
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class FixInvalidServiceDefinitionPass implements CompilerPassInterface
{
public function process(ContainerBuilder $container)
{
// find the bad definition:
$invalidDefinition = $container->findDefinition('the_service_id');
// for example, fix the class
$invalidDefinition->setClass('TheRightClass');
}
}
namespace MyBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
class MyBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
if ($container->getParameter('kernel.debug')) {
$container->addCompilerPass(new FixInvalidServiceDefinitionPass());
}
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.