【发布时间】:2011-09-07 02:35:38
【问题描述】:
我知道这可能是主观的,但我读了optimization page from Google for PHP,他们建议直接使用变量属性而不需要 getter 和 setter。可以理解的是,我看到了这方面的性能提升,但这真的是一个很好的设计实践吗?
他们使用 getter/setter 的例子:
class dog {
public $name = '';
public function setName($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
$rover = new dog();
$rover->setName('rover');
echo $rover->getName();
建议优化:
$rover = new dog();
$rover->name = 'rover';
echo $rover->name;
这对我的设计过程来说是一个可喜的变化,因为我看到对 getter/setter 的需求正在消失,但这样做可能会遇到哪些其他障碍/好处?
【问题讨论】:
-
请记住,本教程有些过时了。它可能仍然与 5.3 相关,但性能确实不是这里的主题。我想推荐Berrys post on getters/setters again,但我注意到你已经知道了..
-
您链接的文章要么是由不了解 PHP 内部原理的人写的,要么已经过时了。至少那里的一些建议是完全错误的。像这样的东西可以带有谷歌的名字真是太可惜了。
-
@mario 是的,我真的很喜欢 Berrys 关于这个主题的帖子,真的试图减少不必要的代码。
-
@nikic 可以理解,我自己在页面上有些不同意的地方,你能详细说明一下吗?
-
@Phill Pafford:作者(我不知道是什么原因)认为
$x = ...; echo $x使用的内存是直接使用echo ...;的两倍。
标签: php optimization variables getter-setter design-principles