PHP方法链接的好处?

时间:2009-12-29 19:49:55

标签: php oop method-chaining

仍然在PHP-OOP训练轮上,这个问题可能属于failblog.org。 =)

PHP中方法链的好处是什么?

我不确定这是否重要,但我将静态调用我的方法。 e.g。

$foo = Bar::get('sysop')->set('admin')->render();

根据我的阅读,任何返回$this的方法都可以被链接。我刚学会了这是PHP5中的新功能。在我看来,如果我不必实例化一个全新的对象(静态调用它)并从类中选择我需要的几个方法,那么可能会有速度优势吗?

我有这个权利吗?

3 个答案:

答案 0 :(得分:6)

使用这两种方法都没有显着的性能优势,尤其是在具有字节码缓存的生产服务器上。

方法链接只是写东西的一种较短方式。与较长版本比较:

$foo = Bar::get('sysop');
$foo -> set('admin');
$foo -> render();

它确实有一些怪癖:典型的IDE(如Eclipse)可以在较长的版本中自动完成代码(只要$foo的类型已知)但需要您记录返回在短版本中工作的所有方法的类型。

答案 1 :(得分:0)

它仍然实例化一个对象;它从未分配给变量。基本上,你只是调用匿名对象的方法。

我认为任何循环节省都可以忽略不计,但我认为在这行代码之后会立即释放未分配的对象,因此您可以节省一些内存(您可以通过将分配的对象设置为{{1}来完成相同的操作当你完成它们的时候)。

人们使用方法链接的主要原因是为了方便;你在一行代码中做了很多。就我个人而言,我觉得它很混乱而且不可维护。

答案 2 :(得分:0)

  

如果我不需要实例化整体   新对象(静态调用)和   只需选择我需要的几种方法   来自班级?

错误!要返回$this,必须实例化该类。