You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

52 lines
1.6 KiB

<?php
/**
* Yoast SEO Plugin File.
*
* @package Yoast\YoastSEO\Dependency_Injection
*/
namespace Yoast\WP\Free\Dependency_Injection;
use Symfony\Component\Config\ConfigCache;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Dumper\PhpDumper;
/**
* This class is responsible for compiling the dependency injection container.
*/
class Container_Compiler {
/**
* Compiles the dependency injection container.
*
* @param boolean $debug If false the container will only be re-compiled if it does not yet already exist.
*
* @throws \Exception If compiling the container fails.
*
* @return void
*/
public static function compile( $debug ) {
$file = __DIR__ . '/../../src/generated/container.php';
$cache = new ConfigCache( $file, $debug );
if ( ! $cache->isFresh() ) {
$container_builder = new ContainerBuilder();
$container_builder->addCompilerPass( new Loader_Pass() );
$loader = new Custom_Loader( $container_builder );
$loader->load( 'config/dependency-injection/services.php' );
$container_builder->compile();
$dumper = new PhpDumper( $container_builder );
$code = $dumper->dump(
[
'class' => 'Cached_Container',
'namespace' => 'Yoast\WP\Free\Generated',
]
);
$code = \str_replace( 'Symfony\\Component\\DependencyInjection', 'YoastSEO_Vendor\\Symfony\\Component\\DependencyInjection', $code );
$code = \str_replace( 'Symfony\\\\Component\\\\DependencyInjection', 'YoastSEO_Vendor\\\\Symfony\\\\Component\\\\DependencyInjection', $code );
$cache->write( $code, $container_builder->getResources() );
}
}
}