仍然在 PHP-OOP 培训轮上,这个问题可能属于failblog.org。=)
PHP中的方法链有什么好处?
我不确定这是否重要,但我将静态调用我的方法。例如
$foo = Bar::get('sysop')->set('admin')->render();
根据我的阅读,$this
允许链接任何返回的方法。我刚刚了解到这是 PHP5 中的新功能。在我看来,如果我不必实例化一个全新的对象(静态调用它)并且只需从类中选择我需要的几个方法,那么可能会有速度优势?
我有这个权利吗?
仍然在 PHP-OOP 培训轮上,这个问题可能属于failblog.org。=)
PHP中的方法链有什么好处?
我不确定这是否重要,但我将静态调用我的方法。例如
$foo = Bar::get('sysop')->set('admin')->render();
根据我的阅读,$this
允许链接任何返回的方法。我刚刚了解到这是 PHP5 中的新功能。在我看来,如果我不必实例化一个全新的对象(静态调用它)并且只需从类中选择我需要的几个方法,那么可能会有速度优势?
我有这个权利吗?
使用这两种方法都没有显着的性能优势,尤其是在具有字节码缓存的生产服务器上。
方法链只是一种更短的编写方式。与更长的版本比较:
$foo = Bar::get('sysop');
$foo -> set('admin');
$foo -> render();
不过,它确实有一些怪癖:典型的 IDE(例如 Eclipse)可以在较长的版本中自动完成您的代码(只要类型$foo
已知),但需要您记录所有方法的返回类型才能工作短版。
它仍然实例化一个对象;它只是从未分配给变量。基本上,您只是在调用匿名对象的方法。
我认为任何周期节省都可以忽略不计,但我认为未分配的对象将在这行代码之后立即被释放,因此您可能会节省一些内存(您可以通过将分配的对象设置null
为完成它们的时间来实现同样的目的)。
人们使用方法链的主要原因是为了方便;你在一行代码中做了很多事情。就个人而言,我认为它很混乱且无法维护。
如果我不必实例化一个全新的对象(静态调用它)而只需从类中选择我需要的几个方法?
错误的!要返回$this
,必须实例化该类。