Skip to content
Snippets Groups Projects
Select Git revision
  • 2d3ba9d186171683dfcf408a6e9e7fa721d2062d
  • main default protected
  • v0.10
  • 0.10.6
  • 0.10.5
  • 0.10.4
  • 0.10.3
  • 0.10.2
  • 0.10.1
  • 0.10.0
  • 0.9.1
  • 0.9.0
12 results

Kernel.php

Blame
  • Kernel.php 4.53 KiB
    <?php
    declare( strict_types=1 );
    
    namespace WPDesk\Init;
    
    use DI\Container;
    use DI\ContainerBuilder as DiBuilder;
    use Psr\Container\ContainerInterface;
    use WPDesk\Init\Binding\Binder\CallableBinder;
    use WPDesk\Init\Binding\Binder\CompositeBinder;
    use WPDesk\Init\Binding\Binder\HookableBinder;
    use WPDesk\Init\Binding\Binder\StoppableBinder;
    use WPDesk\Init\Binding\Loader\ClusteredLoader;
    use WPDesk\Init\Binding\Loader\CompositeBindingLoader;
    use WPDesk\Init\Binding\Loader\DebugBindingLoader;
    use WPDesk\Init\Binding\Loader\OrderedBindingLoader;
    use WPDesk\Init\Configuration\Configuration;
    use WPDesk\Init\DependencyInjection\ContainerBuilder;
    use WPDesk\Init\Extension\ExtensionsSet;
    use WPDesk\Init\HookDriver\CompositeDriver;
    use WPDesk\Init\HookDriver\GenericDriver;
    use WPDesk\Init\HookDriver\HookDriver;
    use WPDesk\Init\HookDriver\LegacyDriver;
    use WPDesk\Init\Util\PhpFileDumper;
    use WPDesk\Init\Util\PhpFileLoader;
    use WPDesk\Init\Plugin\Header;
    use WPDesk\Init\Util\Path;
    use WPDesk\Init\Plugin\DefaultHeaderParser;
    use WPDesk\Init\Plugin\HeaderParser;
    use WPDesk\Init\Plugin\Plugin;
    
    final class Kernel {
    
    	/** @var string|null Plugin filename. */
    	private ?string $filename;
    
    	private Configuration $config;
    
    	private PhpFileLoader $loader;
    
    	private HeaderParser $parser;
    
    	private ExtensionsSet $extensions;
    
    	private PhpFileDumper $dumper;
    
    	public function __construct(
    		string $filename,
    		Configuration $config,
    		ExtensionsSet $extensions
    	) {
    		$this->filename   = $filename;
    		$this->config     = $config;
    		$this->extensions = $extensions;
    		$this->loader     = new PhpFileLoader();
    		$this->parser     = new DefaultHeaderParser();
    		$this->dumper     = new PhpFileDumper();
    	}
    
    	public function boot(): void {
    		$cache_path = $this->get_cache_path( 'plugin.php' );
    		try {
    			$plugin_data = $this->loader->load( $cache_path );
    		} catch ( \Exception $e ) {
    			try {
    				$this->dumper->dump(
    					$this->parser->parse( $this->filename ),
    					$cache_path
    				);
    				$plugin_data = $this->loader->load( $cache_path );