我有一个项目,我在一年前工作。我已经编写了各种各样的东西,而且正是在我开始学习依赖注入的过程中。
长话短说,我忘记了如何将参数传递给构造函数。我试过了,虽然它似乎没有做任何事情。我已经尝试查看Dice的现有代码,但我无法解决。
var name = Path.GetFileNameWithoutExtension(fileFullName); // Get the name only
var extension = Path.GetExtension(fileFullName); // Get the extension only
有问题的课程
<?php declare(strict_types = 1);
$dice = new \Dice\Dice;
$configRule = [
"constructParams" => ["config_directory_here"],
];
$dice->addRule("App\Providers\Configuration", $configRule);
如您所见,在构造函数中我有:
<?php declare(strict_types = 1);
namespace App\Providers;
class Configuration {
private $config;
public function __construct($configDirectory) {
exit($configDirectory);
$this->config = array();
$this->loadConfig($configDirectory);
}
}
我没有得到任何回报,它只是继续使用代码并打印Twig模板,不管它至少只是打印一个空字符串,即使它没有通过?< / p>
我不确定这是我的骰子代码还是我的PHP本身的问题。我有PS4自动加载,因此应该包含Configuration类。
exit($configDirectory);
有人可以帮我吗?谢谢!添加以下代码时,它按预期工作,但我需要使用依赖注入容器来加载类。
"autoload": {
"psr-4": {
"App\\": "src"
}
}
答案 0 :(得分:1)
构造函数假设创建一个对象,除了它试图创建的对象之外,不能返回任何内容。 除了将构造函数参数分配给对象属性之外,您永远不应该创建执行任何工作的构造函数。
答案 1 :(得分:1)
完全公开:我是Dice的作者。
之所以不起作用,是因为Dice从未过早创建对象。在您向容器请求实例之前,不会创建Configuration
对象:
$configuration = $dice->create("App\Providers\Configuration");