30 lines
1.0 KiB
PHP
30 lines
1.0 KiB
PHP
<?php
|
|
|
|
namespace Symfony\Bundle\SwiftmailerBundle\DependencyInjection\Compiler;
|
|
|
|
use Symfony\Component\DependencyInjection\Compiler\AbstractRecursivePass;
|
|
use Symfony\Component\DependencyInjection\Definition;
|
|
|
|
/**
|
|
* Ensures that autoloading of Swiftmailer classes is not optimized by the hot path optimization.
|
|
*
|
|
* Swiftmailer has a special autoloader triggering the initialization of the library lazily.
|
|
* Bypassing the autoloader would thus break the library.
|
|
* This logic allows to keep applying the autoloading optimization on the container, forcing an
|
|
* opt-out only for the Swiftmailer classes, which is better than disabling the optimization
|
|
* entirely.
|
|
*
|
|
* @author Christophe Coevoet <stof@notk.org>
|
|
*/
|
|
class EnsureNoHotPathPass extends AbstractRecursivePass
|
|
{
|
|
protected function processValue($value, $isRoot = false)
|
|
{
|
|
if ($value instanceof Definition && 0 === strpos($value->getClass(), 'Swift_')) {
|
|
$value->clearTag('container.hot_path');
|
|
}
|
|
|
|
return parent::processValue($value, $isRoot);
|
|
}
|
|
}
|