protected function registerTransformers()
{
$cacheManager = $this->getContainer()->get('aspect.cache.path.manager');
$filterInjector = new FilterInjectorTransformer($this, SourceTransformingLoader::getId(), $cacheManager);
$magicTransformer = new MagicConstantTransformer($this);
$aspectKernel = $this;
$sourceTransformers = function () use($filterInjector, $magicTransformer, $aspectKernel, $cacheManager) {
$transformers = [];
$aspectContainer = $aspectKernel->getContainer();
$transformers[] = new WeavingTransformer($aspectKernel, $aspectContainer->get('aspect.advice_matcher'), $cacheManager, $aspectContainer->get('aspect.cached.loader'));
if ($aspectKernel->hasFeature(Features::INTERCEPT_INCLUDES)) {
$transformers[] = $filterInjector;
}
$transformers[] = $magicTransformer;
if ($aspectKernel->hasFeature(Features::INTERCEPT_INITIALIZATIONS)) {
$transformers[] = new ConstructorExecutionTransformer();
}
return $transformers;
};
return array(new CachingTransformer($this, $sourceTransformers, $cacheManager));
}