我有一个大约一年前参与的项目。我在其中编写了各种代码,当时我刚刚开始学习依赖注入。
长话短说,我忘记了如何将参数传递给构造函数。我试过了,尽管它似乎什么也做不了。我试着查看Dice的现有代码,但我不能解决它。
<?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);
}
}
正如您所看到的,在构造函数中,我具有以下内容:
exit($configDirectory);
我没有得到任何东西,它只是继续代码并打印Twig模板,即使没有通过,它至少应该打印一个空字符串吗?
我不确定这是我的骰子代码的问题还是我的PHP本身的问题。我有PS4自动加载,所以应该包括Configuration类。
"autoload": {
"psr-4": {
"App\\": "src"
}
}
有人能帮我吗?谢谢!当添加下面的代码时,它按预期工作,但我需要使用依赖注入容器来加载类。
$config = new \App\Providers\Config("test");
发布于 2018-08-18 21:01:55
完全公开:我是Dice的作者。
这不起作用的原因是Dice从不过早地创建对象。在您向容器请求实例之前,不会创建Configuration
对象:
$configuration = $dice->create("App\Providers\Configuration");
发布于 2018-05-31 08:59:17
构造器应该创建一个对象,除了它试图创建的对象之外,不能返回任何东西。除了将构造函数参数分配给对象属性之外,您永远不应该创建执行任何工作的构造函数。
https://stackoverflow.com/questions/50615164
复制相似问题