千家信息网

PHP如何实现依赖倒置

发表于:2025-01-16 作者:千家信息网编辑
千家信息网最后更新 2025年01月16日,小编给大家分享一下PHP如何实现依赖倒置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实现类:
千家信息网最后更新 2025年01月16日PHP如何实现依赖倒置

小编给大家分享一下PHP如何实现依赖倒置,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

实现类:

setings[$abstract] = $concrete;    }     public function get($abstract, $parameters = array())    {        if (!isset($this->setings[$abstract])) {            return null;        }         return $this->build($this->setings[$abstract], $parameters);    }     public function build($concrete, $parameters)    {        if ($concrete instanceof Closure) {            return $concrete($this, $parameters);        }         $reflector = new ReflectionClass($concrete);         if (!$reflector->isInstantiable()) {            throw new Exception("Class {$concrete} is not instantiable");        }         $constructor = $reflector->getConstructor();         if (is_null($constructor)) {            return $reflector->newInstance();        }         $parameters = $constructor->getParameters();        $dependencies = $this->getDependencies($parameters);         return $reflector->newInstanceArgs($dependencies);    }     public function getDependencies($parameters)    {        $dependencies = array();        foreach ($parameters as $parameter) {            $dependency = $parameter->getClass();            if ($dependency === null) {                if ($parameter->isDefaultValueAvailable()) {                    $dependencies[] = $parameter->getDefaultValue();                } else {                    throw new Exception("Can not be resolve class dependency {$parameter->name}");                }            } else {                $dependencies[] = $this->get($dependency->name);            }        }         return $dependencies;    }}

实现实例:

foo = $foo;    }} $container = new Container();$container->set('Baz', 'Baz');$container->set('MyInterface', 'Foo');$baz = $container->get('Baz');print_r($baz);$container->set('MyInterface', 'Bar');$baz = $container->get('Baz');print_r($baz);

以上是"PHP如何实现依赖倒置"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0