Phalcon:$ di-> get和arrayAccess方法的不同行为

时间:2014-09-30 15:22:29

标签: phalcon

示例:

$di = new Phalcon\DI\FactoryDefault\CLI();
for ($i = 1; $i < 10; $i++) {
    $obj = new stdClass();
    $obj->id = $i;
    $di->set('obj', $obj);
    var_dump($di->get('obj')->id); // same as $i
    //$di->getService('obj')->resolve(); // this trick doesn't help too
    var_dump($di['obj']->id); // always 1
}

我们在项目中使用arrayAccess来获取di键,我们希望能够替换di中的服务。

get和arrayAccess方法的正常行为是什么?

如果是arrayAccess,我们如何替换di中的服务?

1 个答案:

答案 0 :(得分:0)

offsetGet()相当于DI::getShared()

所以,如果你修改这样的代码:

-var_dump($di->get('obj')->id); +var_dump($di->getShared('obj')->id);

在这两种情况下你都会打印1张。

看起来有一个错误unset($di['obj'])没有杀死共享实例,也没有$di['obj']更新对象,但我想你最好提交错误报告: - )

相关问题