feat: scaffold plugin foundation

This commit is contained in:
Keith Solomon
2026-04-26 12:44:16 -05:00
commit 557657344d
24 changed files with 5238 additions and 0 deletions
+58
View File
@@ -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();
}
}