Skip to content
Snippets Groups Projects
Select Git revision
  • c47c124a7a49c3fc99e1803e9c957b1bbec6e164
  • main default protected
  • just_for_review
  • 1.0.0
4 results

TableBody.jsx

Blame
  • Kernel.php 4.41 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 );