此问题与Appending multiple config arrays in PhalconPHP
有关我正在尝试使用get方法从DI中检索对象。
对象正如此设置
// $new_array the array with the merged data. Load it in a
// \Phalcon\Config object
$config = new \Phalcon\Config($new_array);
//Store the config in your DI container for easier use
$di->set('config', $config);
这是我致电
时收到的错误消息$new_array = $di->get('config');
[Uncaught exception'Pharcon \ DI \ Exception',消息'无效 服务定义。缺少'className'参数']
我已经坚持了几天,所以非常感谢我能得到的任何帮助。
答案 0 :(得分:2)
在集合中尝试这个:
$di->set('config', function() {
...
return new \Phalcon\Config($new_array);
});
答案 1 :(得分:0)
看起来你正在做$di->set('config', $new_array);
而不是$di->set('config', $config);
:)
答案 2 :(得分:0)
如果$ config变量是一个数组。您可以在Missing 'className' parameter
引用我的答案这是转发: 我发现Phalcon DI容器使用数组进行构造函数注入。因此,如果将数组设置到Phalcon DI容器中,它将理解要使用构造函数注入来设置对象,并且需要“ className”定义。您可以在https://docs.phalconphp.com/3.4/en/di的“构造函数注入”部分中进行检查。
文档中构造函数注入的示例:
$di->set(
'response',
[
'className' => 'Phalcon\Http\Response'
]
);
$di->set(
'someComponent',
[
'className' => 'SomeApp\SomeComponent',
'arguments' => [
[
'type' => 'service',
'name' => 'response',
],
[
'type' => 'parameter',
'value' => true,
],
]
]
);
我的解决方案:
我按如下所示注入配置:
$di->set('myConfigFactory', new MyConfigFactory());
$di->set('config', function () use ($di) {
return $di->get('myConfigFactory')->build();
});