什么时候PHP中的私有方法应该处理类变量,何时应该将这些方法用作函数?

我想知道私有/受保护的方法何时应该在类的变量上工作(如
$this->_results
),何时应该使用这些方法,就像它们是函数一样(如
$this->_method($results)
)。以下示例: 处理类属性
<?php

class TestA
{
    protected $_results;

    public function getResults()
    {
        $this->_results = getFromWebservice();
        $this->_filterResults();
    }

    protected function _filterResults()
    {
        $this->_results = doMagic($this->_results);
    }
}
工作“作为功能”
<?php

class TestB
{
    protected $_results;

    public function getResults()
    {
        $results = getFromWebservice();
        $this->_results = $this->_filterResults($results);
    }

    protected function _filterResults($results)
    {
        return doMagic($results);
    }
}
    
已邀请:
只要您确定,每个实例只需要维护一个结果变量,请始终使用第一个版本(适用于类属性)。这是使用类的目的之一:拥有共享变量。 实际上,您可以将类属性视为方法的参数,这些参数是隐式指定的。 (如果您使用C ++进行编程,那么至少它确实就是这样。例如,您可以通过在方法参数之后放置一个
const
来指定您不会更改类属性。)     
仅使用您给出的示例,两种方法之间没有任何区别。您可以推断以找出差异,但它们实际上并不存在。 我的猜测是你试图实现一个类而不先设计它。由于图片不完整,没有明显的理由选择一种方法而不是另一种方法。 当你开始准确地充实你想要做的事情时,你可能会发现方法一将过滤例程绑定到类,而方法二鼓励例程与类分开。 方法一 适用于副作用 覆盖原始数据 无法在其他数据上重复使用 方法二 虽然方法一可以很容易地修改,以便记住它已经完成了过滤,但方法二会特别困难,特别是在试图保持抽象时 由于它的抽象,
filterResults
不再是一个逻辑名称,而是像
applyXyzFilter
,这很难证明保持在课堂上     

要回复问题请先登录注册