[英]setters/getters in one method
只是一个想法:
示例(在PHP中):设置名称:$ object-> name('name'); 获得名称:$ object-> name();
如果没有参数:该方法用作getter,否则用作setter。 对于简单的获取/设置者。 愚蠢的,也许吧?
编辑:跟进答案:我真的不喜欢get和set,因为我更喜欢使接口尽可能明确。 当只有少数几个属性时,恕我直言。 因此,我想通过几个显式的getter / setter将其范围缩小到类/对象。
问题是很难遵循。 我宁愿使用PHP5的__get和__set,所以获取和设置变量更加自然,每个人都确切地知道我在做什么。 IE浏览器:
class myClass { function __get($name) { return $this->array[$name]; } function __set($name, $value) { $this->array[$name] = $value; } function print() { echo $this->array['test']; } } $obj = new myClass; $obj->test = "Hi"; echo $obj->test; //echos Hi. $obj->print(); //echos Hi.
可以使用__call()魔术方法来完成。
class Test {
public function __call($name, array $args) {
$variable =& $this->$name;
if(!empty($args)) {
$variable = $args[0];
}
return $variable;
}
}
当然,如果在您的应用程序中有意义,您可以这样做,否则,我将使用已经为您设置的标准吸气剂/设置剂。 您的函数可能如下所示:
public function name($val = null)
{
if (is_null($val))
{
return $this->name;
}
else
{
$this->name = $val;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.