parent = WorkerContainer::getInstance(); } /** * 获取父容器 */ public function getParent(): ContainerInterface { return $this->parent; } /** * Returns true if the container can return an entry for the given identifier. * Returns false otherwise. * * `has($id)` returning true does not mean that `get($id)` will not throw an exception. * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`. * * @param string $id identifier of the entry to look for */ public function has(string $id): bool { return $this->bound($id) || $this->parent->has($id); } /** * 获取一个绑定的实例 * * @template T * @param class-string $abstract 类或接口名 * @param array $parameters 参数 * @throws EntryResolutionException * @return Closure|mixed|T 实例 */ public function make(string $abstract, array $parameters = []) { if (isset($this->shared[$abstract])) { return $this->shared[$abstract]; } // 此类没有,父类有,则从父类中获取 if (!$this->bound($abstract) && $this->parent->bound($abstract)) { return $this->parent->make($abstract, $parameters); } return parent::make($abstract, $parameters); } /** * 清除所有绑定和实例 */ public function flush(): void { parent::flush(); $this->parent->flush(); } }