我想知道私有/受保护的方法应该在类的变量(如$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);
}
}
答案 0 :(得分:3)
只要您确定,每个实例只需要维护一个结果变量,请始终使用第一个版本(适用于class属性)。这是使用类的目的之一:拥有共享变量。
您实际上可能会将类属性视为方法的参数,这些参数是隐式指定的。 (如果您使用C ++进行编程,您至少知道它确实是这样的。例如,您可以通过在方法参数之后放置const
来指定您不会更改类属性。)< / p>
答案 1 :(得分:1)
仅使用您给出的示例,两种方法之间没有任何区别。您可以推断发现差异,但它们实际上并不存在。
我的猜测是你试图在没有先设计它的情况下实现一个类。由于图片不完整,没有明显的理由选择一种方法而不是另一种方法。
当你开始准确地充实你想要做的事情时,你可能会发现方法一将过滤例程绑定到类,而方法二鼓励例程与类分开。
方法一
方法二
filterResults
不再是一个逻辑名称,而是applyXyzFilter
之类的东西,这很难证明在课堂上存在