From 26e0ce77788878ada5addb800b8ecc09fcc6b76b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=91=E6=9E=97?= Date: Tue, 30 Nov 2021 14:59:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{AsyncTask.php => AsyncTaskExecute.php} | 36 +++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) rename Tasker/{AsyncTask.php => AsyncTaskExecute.php} (72%) diff --git a/Tasker/AsyncTask.php b/Tasker/AsyncTaskExecute.php similarity index 72% rename from Tasker/AsyncTask.php rename to Tasker/AsyncTaskExecute.php index 698ef9d..4eeeeac 100644 --- a/Tasker/AsyncTask.php +++ b/Tasker/AsyncTaskExecute.php @@ -4,12 +4,19 @@ namespace Server\Tasker; use Annotation\Inject; use Exception; +use Kiri\Abstracts\BaseObject; +use Kiri\Core\HashMap; use Kiri\Di\Container; use Psr\Container\ContainerInterface; +use ReflectionException; use Server\Contract\OnTaskInterface; use Server\SwooleServerInterface; -class AsyncTask + +/** + * + */ +class AsyncTaskExecute extends BaseObject { @@ -27,6 +34,28 @@ class AsyncTask public ContainerInterface $container; + private HashMap $hashMap; + + + /** + * + */ + public function init() + { + $this->hashMap = new HashMap(); + } + + + /** + * @param string $key + * @param $handler + */ + public function reg(string $key, $handler) + { + $this->hashMap->put($key, $handler); + } + + /** * @param OnTaskInterface|string $handler * @param array $params @@ -49,11 +78,14 @@ class AsyncTask * @param $handler * @param $params * @return object - * @throws \ReflectionException + * @throws ReflectionException * @throws Exception */ private function handle($handler, $params): object { + if (!class_exists($handler) && $this->hashMap->has($handler)) { + $handler = $this->hashMap->get($handler); + } $implements = $this->container->getReflect($handler); if (!in_array(OnTaskInterface::class, $implements->getInterfaceNames())) { throw new Exception('Task must instance ' . OnTaskInterface::class);