经常看到一些第三方库有这样的写法
举个栗子
protected $outType = 'html';
public function setType($type)
{
$this->outType = $type;
}
那么我在代码中调用的时候,如果要输出json
格式的数据的话就必须先调一次setType
这个方法
$this->setType('json');
...
...
...
$this->display(); //这个display里判断$outType属性是`html`还是`json`
我不解的是,为什么不在display()
方法里直接传递一次参数呢,比如下面这样
$this->display('json');
这样还省了一次方法调用。 我想知道第一种的写法的好处主要表现在什么地方。
谢谢大家了。
第一种写法:你可以把它理解为:
只不过现在整体变成类了!因为本类在外面被继承调用时,有可能会根据调用方的不同比如:需要输出html或者json格式,但是我又不能直接修改
protected $outType
的值,那必然要有一种办法去间接修改该类里面的属性,因此就出现了下面的setType($type)
方法,通过外部调用来达到修改内部属性值的效果!