separate ZMPlugin to traits

This commit is contained in:
crazywhalecc
2023-01-12 09:42:16 +08:00
parent dd6b700b47
commit 8c491e4290

View File

@@ -7,6 +7,7 @@ namespace ZM;
use ZM\Command\Server\ServerStartCommand;
use ZM\Exception\SingletonViolationException;
use ZM\Plugin\PluginManager;
use ZM\Plugin\PluginMeta;
use ZM\Plugin\ZMPlugin;
class ZMApplication extends ZMPlugin
@@ -20,13 +21,12 @@ class ZMApplication extends ZMPlugin
/**
* @throws SingletonViolationException
*/
public function __construct(mixed $dir = null)
public function __construct()
{
if (self::$obj !== null) {
throw new SingletonViolationException(self::class);
}
self::$obj = $this; // 用于标记已经初始化完成
parent::__construct($dir ?? (__DIR__ . '/../..'));
$this->args = ServerStartCommand::exportOptionArray();
}
@@ -47,7 +47,9 @@ class ZMApplication extends ZMPlugin
*/
public function run()
{
PluginManager::addPlugin(['name' => 'native-app', 'object' => $this]);
$meta = new PluginMeta(['name' => 'native'], ZM_PLUGIN_TYPE_NATIVE);
$meta->bindEntity($this);
PluginManager::addPlugin($meta);
(new Framework($this->args))->init()->start();
}
}