首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony2:在函数中查找对象与将对象传递给函数

Symfony2:在函数中查找对象与将对象传递给函数
EN

Stack Overflow用户
提问于 2017-03-11 01:27:25
回答 1查看 195关注 0票数 0

我在Symfony2中有一个修改对象的函数。该函数可以通过以下两种方式之一接收对象。首先,可以像这样将对象传递给函数:

代码语言:javascript
复制
public function myFunction(Object $myObject)
    {
        // Do something with $myObject
    }

或者,可以将对象id (或任何其他属性)传递给函数并用于查找函数中的对象,如下所示:

代码语言:javascript
复制
public function myFunction($id)
    {
        $myObject = $this->entityManager->getRepository('AppBundle\Entity\Object')->find($id);
        // Do something with $myObject
    }

在功能上,这两种方法是等效的。我的问题是,这两种方法对应用程序性能的影响有何不同?我知道为了优化性能,数据库查询的数量应该最小化。那么,额外的find()查询的性能成本与将对象传递给函数的性能成本相比如何呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-19 03:16:14

将对象传递给函数总是性能更高。因为PHP5对象是are passed by object identifier, very similar in concept to pass by reference

也就是说,从数据库中检索原始数据的单个记录相对较快。在我的经验中,水合(将从数据库检索到的关系数据转换为其映射的业务对象)是您发现瓶颈的地方。Marco Pivetta,Doctrine的首席开发人员,已经编写了一个excellent post about this

一般来说,在正常情况下,您可能会注意到传递对象和合并单个对象在性能上没有区别。然而,循环中的水合是你遇到麻烦的地方。对象越复杂,水合数据越多,性能就越差。

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

https://stackoverflow.com/questions/42724310

复制
相关文章

相似问题

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