$ classInstance-> title比$ classInstance-> getTitle()快 - 那么为什么大多数人使用较慢的方法?

时间:2012-07-10 14:40:57

标签: php performance oop scalability

我最近一直在阅读有关如何在PHP中优化代码以实现可伸缩性的文章。我今天读过的一些文章不鼓励使用其他方法简单地从类中返回对象。

基本上,他们说:

如果您有这样的课程:

class myClass
{

public $something;

public function setSomething($val)
{

$this->something=$val;

}//function end

}//class end

$myClassInstance=new myClass;

你想获得类属性$something,你应该这样做:

//echo $something from myClass
echo $myClassInstance->something;

而不是这个:

//echo $something from myClass using an additional method (getSomething()) that returns the property
echo $myClassInstance->getSomething();

因为存在速度差异。不鼓励的方法较慢($myClassInstance->getSomething()),这就是不鼓励的原因。

但是,我看到很多人仍在使用劝阻方法(教程,代码示例等)。我可以理解他们 是否因为某种原因将属性设置为私有,但通常情况并非如此。

所以我的问题是,使用劝阻方法是否有一些好处或缺点?如果是这样,是什么?

2 个答案:

答案 0 :(得分:5)

有人使用gettersetter方法的原因是encapsulation。直接访问$something会同时呈现readablewriteable,但是通过getSomething()访问它只会给调用者一个副本(即不会改变原始值)

答案 1 :(得分:2)

如果你想在你的" GetTitle"中应用一些逻辑怎么办?后来如过滤器或通过引入特殊逻辑改变一些输出?你永远都不知道这些东西什么时候会爆发出来。

另外,人们说功能访问器风格较慢,使用100万个循环来对其进行基准测试,但严重的是,你要在一个页面上显示100万个标题吗?