首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Phalcon:$di->get和arrayAccess方法的不同行为

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

Stack Overflow用户
提问于 2014-09-30 23:22:29
回答 1查看 54关注 0票数 0

示例:

代码语言:javascript
复制
$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中的服务?

EN

回答 1

Stack Overflow用户

发布于 2014-10-01 23:09:52

offsetGet()等同于DI::getShared()

因此,如果您像这样修改代码:

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

在这两种情况下,您都将打印1。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26124485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档