可以用例子来解释一下$ obj - > $ a() - > $ b是什么意思?我已经使用了PHP OOP相当长的时间,并且在一些地方看到了这个结构,而不仅仅是这个$ obj - > $ a();我应该在什么情况下使用它?PHP OOP关于参考
回答
$a = 'someMethod';
$b = 'someProperty';
$obj->$a()->$b;
等于:
$obj->someMethod()->someProperty;
了解更多关于variable variables
$ a是一个名称的方法。因此,如果$a = "myFunc"
,这相当于:
$obj->myFunc()->$b;
$ B似乎是一个属性的引用。该方法自然会返回一个对象,因此,如果$b = "myProp"
,我们可以修改这是:
$obj->myFunc()->myprop;
这是真的易懂的形式差。
这意味着$a()
返回一个对象,并且$b
是对象$a()
返回的成员。
这被称为方法链接当每个方法返回原始对象时,因此可以调用同一对象的各种方法,而无需在每次调用之前重复指定$obj->
。
这绝对是这种情况,但如果$ a返回除$ obj以外的对象,则可能不会链接。 – 2010-03-22 01:13:03
对,如果返回不同的对象,则不会链接。但通常当你看到这种语法时,它就是链条的一部分。否则,我会认为这是一个不好的做法。 – 2010-03-22 01:15:08
非常感谢!在PHP5 OOP中学习了一个新的有用功能。 – Starmaster 2010-03-22 15:04:50
实际期限为流利接口,如说是返回原来的对象,继承人一个完整的例子类
Class Fluent {
public $var1;
public $var2;
function setVar1($value) {
$this->var1 = $value;
return $this;
}
function setVar2($value) {
$this->var2 = $value;
return $this;
}
function getVars() {
echo $this->var1 . $this->var2;
}
}
$fluent = new Fluent();
$fluent->setVar1("Foo")->setVar2("Bar")->getVars();
这显然会返回“FooBar的”。
HTH
- 1. php oop私人方法参考
- 2. PHP OOP与程序MySQL函数参考
- 3. 关于类的PHP OOP
- 4. OOP的JavaScript - 这个参考
- 5. OOP Javascript - 参考错误
- 6. Javascript - OOP参考循环
- 7. JavaScript OOP参考方法
- 8. 关于参考路径
- 9. 关于指针和参考
- 10. 关于PHP OOP范围的困惑
- 11. 变量范围和参考在OOP
- 12. OOP JS:变量传递/参考查询
- 13. OOP参数值等于null
- 14. 关于在PHP中创建图表/图形的参考?
- 15. 关于外部表Postgres的参考9.5
- 16. 关于tomcat的参考问题?
- 17. 混乱关于C++类参考
- 18. 关于C++类具有自我参考
- 19. C++关于指针/参考与remove_if
- 20. 关于Javascript中getelementbyID的将来参考
- 21. Typo3:关于TSFE数组的参考
- 22. 关于r值参考的困惑
- 23. 参考资料关于Oracle的.NET ORM
- 24. 关于OOP中的方法
- 25. 参考在PHP
- 26. OOP在PHP,基于会话
- 27. 返回参考PHP
- 28. PHP常量参考
- 29. 问题PHP参考
- 30. php传递参考
只需添加到这个答案,方法链是好的,如果你的类接口周到(见jQuery的)。这不是方法链接,而是元编程。 此处使用变量,对于对象和方法名称,会使调试更加困难,因为您已将这些调用移至运行时。 我不能说这个决定是否合适,因为代码没有在上下文中给出。 – 2010-03-22 10:59:14
我同意方法链接很好。但我确实认为,我们无法确定这些代码是否合理的事实是一个很好的指标,事实并非如此。它试图太聪明。 – 2010-03-22 13:33:25