PHP code example of bangpound / callable-compiler-pass
1. Go to this page and download the library: Download bangpound/callable-compiler-pass library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
bangpound / callable-compiler-pass example snippets
namespace My\Bundle\CoolBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use My\Bundle\CoolBundle\DependencyInjection\Compiler\AddMyStuffPass;
class MyCoolBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new AddMyTaggedServicesPass());
}
}
namespace My\Bundle\CoolBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Bangpound\Symfony\DependencyInjection\CallableCompilerPass;
class MyCoolBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
parent::build($container);
$container->addCompilerPass(new CallableCompilerPass(
function (ContainerBuilder $container) {
if (!$container->has('my_cool.service')) {
return;
}
$definition = $container->findDefinition('my_cool.service');
$taggedServices = $container->findTaggedServiceIds(
'my_cool.service_addition'
);
foreach ($taggedServices as $id => $tags) {
$definition->addMethodCall(
'addThing', array(new Reference($id))
);
}
}
));
}
}
use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\Config\Loader\LoaderInterface;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Kernel;
class AppKernel extends Kernel
{
use MicroKernelTrait;
public function registerBundles()
{
$bundles = array(
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
);
return $bundles;
}
protected function configureContainer(ContainerBuilder $c, LoaderInterface $loader)
{
$c->addCompilerPass(new CallableCompilerPass(function (ContainerBuilder $container) {
if (!$container->has('my_cool.service')) {
return;
}
$definition = $container->findDefinition('my_cool.service');
$taggedServices = $container->findTaggedServiceIds(
'my_cool.service_addition'
);
foreach ($taggedServices as $id => $tags) {
$definition->addMethodCall(
'addThing', array(new Reference($id))
);
}
});
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.