From b57ca5e9ead5640298831105fc845236b75ae13a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Tue, 30 Mar 2021 14:28:25 +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 --- System/Abstracts/BaseApplication.php | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/System/Abstracts/BaseApplication.php b/System/Abstracts/BaseApplication.php index 964bc6bf..02bb01c2 100644 --- a/System/Abstracts/BaseApplication.php +++ b/System/Abstracts/BaseApplication.php @@ -196,6 +196,8 @@ abstract class BaseApplication extends Service * @param $key * @param $value * @throws InitException + * @throws NotFindClassException + * @throws ReflectionException */ private function addEvent($event, $key, $value): void { @@ -203,16 +205,30 @@ abstract class BaseApplication extends Service $event->on($key, $value, [], true); return; } - if (isset($value[0]) && is_object($value[0])) { + if (is_object($value)) { $event->on($key, $value, [], true); return; } - foreach ($value as $item) { - if (!is_callable($item, true)) { - throw new InitException("Class does not hav callback."); + if (is_array($value)) { + if (is_object($value[0]) && !($value[0] instanceof \Closure)) { + $event->on($key, $value, [], true); + return; + } + + if (is_string($value[0])) { + $value[0] = Snowflake::createObject($value[0]); + $event->on($key, $value, [], true); + return; + } + + foreach ($value as $item) { + if (!is_callable($item, true)) { + throw new InitException("Class does not hav callback."); + } + $event->on($key, $item, [], true); } - $event->on($key, $item, [], true); } + }