Php 将方法返回值用作参数与在一个方法中设置类变量并将其用作另一个方法的参数相比

Php 将方法返回值用作参数与在一个方法中设置类变量并将其用作另一个方法的参数相比,php,function,oop,Php,Function,Oop,我想知道这两种编程风格的优点和缺点是什么,这只是一种品味的问题还是一种理想的方式 将方法返回值用作另一个方法的参数: public function add($data) { $this->uploadFilesToPreflight( $this->addOrderFilesToDB( $data['shop'], $data['filesData'] ) ); } VS在方法1中设

我想知道这两种编程风格的优点和缺点是什么,这只是一种品味的问题还是一种理想的方式

将方法返回值用作另一个方法的参数:

public function add($data) 
{
    $this->uploadFilesToPreflight(
        $this->addOrderFilesToDB(
            $data['shop'],
            $data['filesData']
        )
    );
}
VS在方法1中设置受保护的类变量并将其用作方法2参数:

public function add($data) 
{
    //does some stuff and sets $orderFilesArray
    $this->addOrderFilesToDB($data['shop'], $data['filesData']);

    $this->uploadFilesToPreflight($this->orderFilesArray);
}

问题是,这门课应该是什么?这个类有状态吗

如果该类应该是一个可以多次调用add$data的服务,并且该行为不应该改变,那么第一个选项会更好

如果该类有一个状态,并且它的行为应该通过调用add$data来更改,那么第二个选项就可以了,但是您必须注意,如果该类有其他依赖于$this->orderFilesArray的方法,那么这可能会导致副作用


为了更好地回答什么选项是最好的,您必须发布一个更广泛的类上下文。

在第一种情况下,您不为orderFilesArray保留内存。第二个是好的,当你需要存储该数组以备以后使用时。这只是风格偏好。如果uploadFilesToPreflight总是使用$this->orderFilesArray,您也可以省略参数uploadFilesToPreflight。@lolka\u bolka这实际上并不完全正确,因为addOrderFilesToDB的返回值将作为一个新变量传递,从而使用几乎相当于您将其定义为属性的内存。@gries Yes,但在完成操作后,内存就释放了,不是吗?而如果您创建一个属性,它将保存该内存。如果我错了,请告诉我。@lolka_bolka是的,这实际上是正确的