【发布时间】:2012-11-15 12:32:22
【问题描述】:
将 getter 和/或 setter 方法替换为处理两者的单个方法是否是个好主意?
例如:
function name($what = null){
if(!$what)
return $this->name;
$this->name = $what;
}
像这样使用:
// get name
print $obj->name();
// set name
$obj->name('bla');
我已经看到一些框架可以做到这一点。社区认为这是一种好的做法还是坏的做法? :P
它看起来效率更高,但看起来有点混乱,因为我习惯了 PHP 中的 getThing() 和 setThing()。这种风格让我想起了 jQuery。
【问题讨论】:
-
如果我想将 var 设置为
false或null? -
你是对的,它非常令人困惑和反直觉。我希望 PHP 能提供类似属性的东西。
-
jQuery 正是它所模仿的。显然,许多程序员很容易被双重用途的访问器方法弄糊涂。但在某些情况下它可以帮助 API 可用性,并且对于流畅的接口很常见。 (优先于应该不存在的浅层 getter 和 setter。)
-
@mario - 据我了解,流畅的接口总是返回一个值,你可以依赖它。上面示例中令人困惑的部分是,函数可能返回值,也可能不返回值,这只会带来麻烦。
标签: php class coding-style getter-setter