可以用例子来解释一下$ 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
- 3. 关于参考路径
- 4. 关于指针和参考
- 5. 关于PHP OOP范围的困惑
- 6. OOP参数值等于null
- 7. 关于在PHP中创建图表/图形的参考?
- 8. 关于外部表Postgres的参考9.5
- 9. 关于tomcat的参考问题?
- 10. 关于Javascript中getelementbyID的将来参考
- 11. C++关于指针/参考与remove_if
- 12. 混乱关于C++类参考
- 13. OOP在PHP,基于会话
- 14. PHP常量参考
- 15. 问题PHP参考
- 16. php参考传递
- 17. PHP返回参考
- 18. 关于双向关系的JPA循环参考
- 19. 需要关于OOP的建议PHP MySQL连接
- 20. PHP中的OOP:关于MVC中的静态使用
- 21. 要求作出澄清关于PHP OOP程序
- 22. 排序自参考关系
- 23. 关闭循环参考?
- 24. 关闭和参考设置
- 25. Microsoft.Http.dll和相关参考
- 26. php OOP - 与方法可见性有关
- 27. 1到OOP中的很多关系php
- 28. 需要关于OOP哲学的建议
- 29. 关于Python的基本逻辑OOP
- 30. 关于OOP的基本问题
只需添加到这个答案,方法链是好的,如果你的类接口周到(见jQuery的)。这不是方法链接,而是元编程。 此处使用变量,对于对象和方法名称,会使调试更加困难,因为您已将这些调用移至运行时。 我不能说这个决定是否合适,因为代码没有在上下文中给出。 – 2010-03-22 10:59:14
我同意方法链接很好。但我确实认为,我们无法确定这些代码是否合理的事实是一个很好的指标,事实并非如此。它试图太聪明。 – 2010-03-22 13:33:25