Select Git revision
PluginHeaderData.php
-
Bartek Jaskulski authored
Add more flexibility for `PluginInit` with interfaces. Separate hook attaching from initialization process to exchange hook registration methods in future. Start caching data from plugin and container in over-simplistic way. Provide an extension point for DI container with bundles. Signed-off-by:
Bart Jaskulski <bjaskulski@protonmail.com>
Bartek Jaskulski authoredAdd more flexibility for `PluginInit` with interfaces. Separate hook attaching from initialization process to exchange hook registration methods in future. Start caching data from plugin and container in over-simplistic way. Provide an extension point for DI container with bundles. Signed-off-by:
Bart Jaskulski <bjaskulski@protonmail.com>
PluginHeaderData.php 1.02 KiB
<?php
declare( strict_types=1 );
namespace WPDesk\Init;
use WPDesk\Init\Configuration\ReadableConfig;
use WPDesk\Init\Dumper\PhpFileDumper;
use WPDesk\Init\Loader\PhpFileLoader;
class PluginHeaderData {
/** @var PluginHeaderParser */
private $parser;
/** @var PhpFileLoader */
private $loader;
/** @var PhpFileDumper */
private $dumper;
/** @var ReadableConfig */
private $config;
public function __construct(
PluginHeaderParser $parser,
PhpFileLoader $loader,
PhpFileDumper $dumper,
ReadableConfig $config
) {
$this->parser = $parser;
$this->loader = $loader;
$this->dumper = $dumper;
$this->config = $config;
}
public function get_plugin_data( string $plugin_file ): array {
$cache_path = $this->config->get( 'cache_path', 'generated' ) . '/plugin.php';
try {
return $this->loader->load( $cache_path );
} catch ( \Exception $e ) {
$plugin_data = $this->parser->parse( $plugin_file );
$this->dumper->dump( $plugin_data, $cache_path );
return $this->loader->load( $cache_path );
}
}
}