From b5cd6486580710002b9e3e5921e10fa5a4ae4ec7 Mon Sep 17 00:00:00 2001 From: JanHuang <384099566@qq.com> Date: Tue, 27 Oct 2026 00:08:47 +0800 Subject: [PATCH] =?UTF-8?q?refactor(container):=20=E5=90=88=E5=B9=B6=20mak?= =?UTF-8?q?e/build=20=E4=B8=BA=E5=8D=95=E4=B8=80=20make=20=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除私有 build(),循环依赖检测参数收敛到 make(string $class, array $resolving = []) - 保持 make() 公共行为与错误信息不变 - 现有 DI/接口绑定/循环依赖测试全部通过 --- src/Container.php | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Container.php b/src/Container.php index cc3f8d9..8f0d162 100755 --- a/src/Container.php +++ b/src/Container.php @@ -76,13 +76,10 @@ public function get(string $id, ...$parameters): mixed /** * 构造器注入:按参数类型从容器解析依赖,未注册的类递归构建。 + * + * @param array $resolving 内部递归使用,用于循环依赖检测 */ - public function make(string $class): object - { - return $this->build($class, []); - } - - private function build(string $class, array $resolving): object + public function make(string $class, array $resolving = []): object { if ($this->has($class)) { return $this->get($class); @@ -114,7 +111,7 @@ private function build(string $class, array $resolving): object if ($type instanceof ReflectionNamedType && !$type->isBuiltin()) { $name = $type->getName(); - $arguments[] = $this->has($name) ? $this->get($name) : $this->build($name, $resolving); + $arguments[] = $this->has($name) ? $this->get($name) : $this->make($name, $resolving); continue; }