如何在 php 中实现这个?
可能的重复:
如何在 PHP5 中构建多 oop 函数
嘿,
我'我在几个论坛系统中看到过这种代码,但我找不到任何这样的例子:
$this->function()->anotherfunction();
你可以在 PDO 中看到类似的例子:
$pdo->query($sqlQuery)->fetch();
我不知道这种类型的编码在 PHP 中是如何调用的,因此我可以不必继续寻找任何教程和示例。
Possible Duplicate:
How to build multi oop functions in PHP5
Hey,
I've seen this kind of code in a couple of forum systems but I can't find any examples like this:
$this->function()->anotherfunction();
You can see a similar example in PDO:
$pdo->query($sqlQuery)->fetch();
I don't know how this type of coding is called in PHP and thus I can't get on looking for any tutorials and examples.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您只需确保可链接方法返回对象引用,然后就可以将另一个方法调用链接到结果上。
您可以像 @Tim Cooper 所示返回 $this ,也可以返回对另一个不同对象的引用:
您显示的 PDO 示例使用两种不同的对象类型。
PDO::query()
实例化并返回一个PDOStatement
对象,该对象又具有一个fetch()
方法。此技术也可用于 Fluent 接口,特别是在实现域接口时- 特定语言。但并非所有方法链都是流畅的接口。
请参阅 Martin Fowler 在 2005 年撰写的有关流畅界面的内容。他引用了 领域驱动设计因提出这个想法而闻名。
You just make sure a chainable method returns an object reference, and you can chain another method call onto the result.
You can
return $this
as @Tim Cooper shows, or you can return a reference to another different object:The PDO example you show uses two different object types.
PDO::query()
instantiates and returns aPDOStatement
object, which in turn has afetch()
method.This technique can also be used for a fluent interface, particularly when implementing an interface for domain-specific language. Not all method chains are fluent interfaces, though.
See what Martin Fowler wrote about fluent interfaces in 2005. He cites Eric Evans of Domain-Driven Design fame as having come up with the idea.
这称为方法链。一个例子如下。请注意,我们正在返回当前对象。
This is called method chaining. An example would be the following. Notice we are returning the current object.