mirror of
https://github.com/cedar2025/Xboard.git
synced 2025-02-08 18:08:13 -05:00
73 lines
1.6 KiB
PHP
73 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Plugin;
|
|
|
|
use Illuminate\Support\Facades\View;
|
|
use Illuminate\Support\Facades\Route;
|
|
use Illuminate\Support\Facades\File;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
abstract class AbstractPlugin
|
|
{
|
|
protected array $config = [];
|
|
protected string $basePath;
|
|
protected string $pluginCode;
|
|
|
|
public function __construct($pluginCode)
|
|
{
|
|
$this->pluginCode = $pluginCode;
|
|
$reflection = new \ReflectionClass($this);
|
|
$this->basePath = dirname($reflection->getFileName());
|
|
}
|
|
|
|
/**
|
|
* 设置配置
|
|
*/
|
|
public function setConfig(array $config): void
|
|
{
|
|
$this->config = $config;
|
|
}
|
|
|
|
/**
|
|
* 获取配置
|
|
*/
|
|
public function getConfig(): array
|
|
{
|
|
return $this->config;
|
|
}
|
|
|
|
/**
|
|
* 注册动作钩子监听器
|
|
*/
|
|
protected function listen(string $hook, callable $callback, int $priority = 20): void
|
|
{
|
|
HookManager::register($hook, $callback, $priority);
|
|
}
|
|
|
|
/**
|
|
* 注册过滤器钩子
|
|
*/
|
|
protected function filter(string $hook, callable $callback, int $priority = 20): void
|
|
{
|
|
HookManager::registerFilter($hook, $callback, $priority);
|
|
}
|
|
|
|
/**
|
|
* 移除事件监听器
|
|
*/
|
|
protected function removeListener(string $hook): void
|
|
{
|
|
HookManager::remove($hook);
|
|
}
|
|
|
|
/**
|
|
* 中断当前请求并返回新的响应
|
|
*
|
|
* @param Response|string|array $response
|
|
* @return never
|
|
*/
|
|
protected function intercept(Response|string|array $response): never
|
|
{
|
|
HookManager::intercept($response);
|
|
}
|
|
} |