feat: scaffold plugin foundation
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/**
|
||||
* Plugin lifecycle coordinator.
|
||||
*
|
||||
* @package WPContentSync
|
||||
*/
|
||||
|
||||
namespace WPContentSync;
|
||||
|
||||
use WPContentSync\Admin\AdminPage;
|
||||
use WPContentSync\Logging\LoggerInterface;
|
||||
use WPContentSync\Logging\OptionLogger;
|
||||
use WPContentSync\Settings\SettingsRepository;
|
||||
|
||||
final class Plugin {
|
||||
private Container $container;
|
||||
|
||||
private function __construct( Container $container ) {
|
||||
$this->container = $container;
|
||||
}
|
||||
|
||||
public static function create(): self {
|
||||
$container = new Container();
|
||||
|
||||
$container->factory(
|
||||
SettingsRepository::class,
|
||||
static function (): SettingsRepository {
|
||||
return new SettingsRepository();
|
||||
}
|
||||
);
|
||||
|
||||
$container->factory(
|
||||
LoggerInterface::class,
|
||||
static function (): LoggerInterface {
|
||||
return new OptionLogger();
|
||||
}
|
||||
);
|
||||
|
||||
$container->factory(
|
||||
AdminPage::class,
|
||||
static function () use ( $container ): AdminPage {
|
||||
return new AdminPage(
|
||||
$container->get( SettingsRepository::class ),
|
||||
$container->get( LoggerInterface::class )
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
return new self( $container );
|
||||
}
|
||||
|
||||
public function register(): void {
|
||||
/** @var AdminPage $admin_page */
|
||||
$admin_page = $this->container->get( AdminPage::class );
|
||||
|
||||
$admin_page->register();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user