From f26539c41f7845ccb97afb4915f3343a8be4cce7 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 27 Nov 2021 17:43:29 +0800 Subject: [PATCH] 1 --- kiri-engine/Di/Container.php | 55 +++++++++++++++++++-------- kiri-engine/Di/ContainerInterface.php | 12 ------ kiri-engine/FileListen/HotReload.php | 4 +- kiri-engine/Kiri.php | 2 +- 4 files changed, 42 insertions(+), 31 deletions(-) delete mode 100644 kiri-engine/Di/ContainerInterface.php diff --git a/kiri-engine/Di/Container.php b/kiri-engine/Di/Container.php index f60d42ca..504c6c68 100644 --- a/kiri-engine/Di/Container.php +++ b/kiri-engine/Di/Container.php @@ -21,6 +21,7 @@ use ReflectionException; use ReflectionFunction; use ReflectionMethod; use ReflectionProperty; +use Psr\Container\ContainerInterface; /** * Class Container @@ -61,26 +62,39 @@ class Container extends BaseObject implements ContainerInterface ]; - /** - * @param $class - * @param array $constrict - * @param array $config - * - * @return mixed - * @throws - */ - public function get($class, array $constrict = [], array $config = []): mixed + /** + * @param string $id + * @return mixed + * @throws ReflectionException + */ + public function get(string $id): mixed { - if ($this->isInterface($class)) { - $class = $this->_interfaces[$class]; - } - if (!isset($this->_singletons[$class])) { - $this->_singletons[$class] = $this->resolve($class, $constrict, $config); - } - return $this->_singletons[$class]; + return $this->make($id, [], []); } + + /** + * @param $class + * @param array $constrict + * @param array $config + * @return mixed + * @throws ReflectionException + * @throws Exception + */ + public function make($class, array $constrict = [], array $config = []): mixed + { + if ($this->isInterface($class)) { + $class = $this->_interfaces[$class]; + } + if (!isset($this->_singletons[$class])) { + $this->_singletons[$class] = $this->resolve($class, $constrict, $config); + } + return $this->_singletons[$class]; + } + + + /** * @param string $interface * @param string $class @@ -435,4 +449,13 @@ class Container extends BaseObject implements ContainerInterface } return $old; } + + /** + * @param string $id + * @return bool + */ + public function has(string $id): bool + { + return isset($this->_singletons[$id]) || isset($this->_interfaces[$id]); + } } diff --git a/kiri-engine/Di/ContainerInterface.php b/kiri-engine/Di/ContainerInterface.php deleted file mode 100644 index 6cdc656b..00000000 --- a/kiri-engine/Di/ContainerInterface.php +++ /dev/null @@ -1,12 +0,0 @@ -dirs = Config::get('inotify', [APP_PATH . 'app']); swoole_async_set(['enable_coroutine' => false]); if (!extension_loaded('inotify')) { - $this->driver = Kiri::getDi()->get(Scaner::class, [$this->dirs, $this]); + $this->driver = Kiri::getDi()->make(Scaner::class, [$this->dirs, $this]); } else { - $this->driver = Kiri::getDi()->get(Inotify::class, [$this->dirs, $this]); + $this->driver = Kiri::getDi()->make(Inotify::class, [$this->dirs, $this]); } if (Kiri::getPlatform()->isLinux()) { swoole_set_process_name('[' . Config::get('id', 'sw service.') . '].sw:wather'); diff --git a/kiri-engine/Kiri.php b/kiri-engine/Kiri.php index 124a6ed3..dcc90cbe 100644 --- a/kiri-engine/Kiri.php +++ b/kiri-engine/Kiri.php @@ -13,7 +13,7 @@ use JetBrains\PhpStorm\Pure; use Kiri\Abstracts\Config; use Kiri\Core\Json; use Kiri\Di\Container; -use Kiri\Di\ContainerInterface; +use Psr\Container\ContainerInterface; use ReflectionException; use Server\ServerManager; use Swoole\Coroutine;