是否有一种模式可以在注入依赖时实例化依赖关系?
假设您有Config
Foo
和Bar
使用的Qux
类。
代替这样做:
$config = new Config;
new Foo($config);
$config = new Config;
new Bar($config);
$config = new Config;
new Qux($config);
是否存在可以执行类似操作的模式?
$config = new Config;
new Foo($config);
new Bar($config);
new Qux($config);
答案 0 :(得分:1)
我认为您正在寻找一个依赖注入容器,该容器可以提供(您的Config对象的)“共享”实例。
示例:
composer require league/container
<?php
// container.php
use League\Container\Container;
use League\Container\ReflectionContainer;
use App\Config;
$container = new Container();
$container->delegate(new ReflectionContainer());
$container->share(Config::class, static function () {
return new Config();
});
您的课程应使用构造函数依赖项注入。
示例:
<?php
namespace App\Domain;
use App\Config;
final class Foo
{
/**
* @var Config
*/
private $config;
public function __construct(Config $config)
{
$this->config = $config;
}
}