使用对象作为参数与在方法中创建对象

时间:2014-03-21 14:56:42

标签: php oop

在讨论中,我不确定我说的时候是否正确:

  

“最好将对象作为参数而不是对象传递   。ID的“

所以我想我会在这里要求澄清。

这样做有什么好处:

public function doSomething(\Item $item) 
{   
     return $item->getSomething() * 2;
}

通过这个:

public function doSomething($itemID) 
{
    $item = \Item::getByID($itemID); // Return an item based on ID
    if ($item) // Check the object has been returned
    {
       return $item->getSomething() * 2;
    }
}

说一个好处是你可以假设对象存在,这是真的吗,所以没有必要检查它是否存在?

2 个答案:

答案 0 :(得分:4)

它被称为dependency injection,主要好处是您可以通过注入" doSomething()"来完全隔离mock方法。将对象放入方法中,因此测试doSomething()并不依赖于Item本身的逻辑

答案 1 :(得分:0)

第一个解决方案在运行时可能会快一点。你应该更喜欢循环中的第二个内部。第二个按ID查找项目。