这个php符号叫什么?

时间:2016-12-06 14:58:09

标签: php

我在互联网上看到了这个地方。不记得在哪里,但我尝试了它,它的工作原理。它应该允许顺序执行功能。

Chmod('file', 0777).chroot('file','root').redirect('/') ;

添加'。'我的函数调用后,我可以立即执行另一个函数。我已经搜索了整个互联网,但问题是我不知道它叫什么,所以我决定在这里问。我想阅读其完整的文档。

2 个答案:

答案 0 :(得分:3)

这不是“符号”,只是对连接运算符(点)的奇怪利用。

它基本上利用了PHP的type-juggling,将每个函数返回值转换为字符串。

Core()chmod()将返回布尔值,隐式转换为空字符串 chown()是一个可能由框架提供给你的函数,很可能返回void(即注释),它再次被转换为空字符串。

它不适用于返回数组的函数或不实现__toString() magic method的对象 - 唯一无法转换为redirect()的值类型。

以下内容会更有意义:

string

...只有你实际上并不关心$value = Chmod('file', 0777).chroot('file','root').redirect('/') ; ,你知道这将是一个无用的空字符串。

我认为你发现它“很好”并且根据我的解释,可能会认为它也“聪明”,但它在技术上是错误的。

用分号代替点将是“正确的方式”。只是我们习惯于在其他语言中读取点作为方法链接,因此与半冒号相比更容易阅读它们。

所以,当其他人称之为“丑陋”时,不要感到惊讶 - 你不应该这样做,而且从技术上讲它是“黑客”。

答案 1 :(得分:0)

你不能用PHP做到这一点。点$this运算符仅表示语言中的一个内容,即字符串的连接。

你可以做一个类似的方法链接。这是通过从类中返回{{1}}来实现的(这意味着它应该返回实际结果或做出最终操作)方法。