PHP如何创建一个名为“do”的函数?
我看到一个名为“do”的方法的库
public function do
完全错误了解析器 解析错误:语法错误,意外的 T_DO,期望 T_STRING ...
//same on call
$obj->do()
解析错误:语法错误,意外的 T_DO,期望 T_STRING 或 T_VARIABLE 或 Gearman 中的 '$'
顺便使用“do”函数。
I saw a library with a method named "do"
public function do
totally bugs out parser
Parse error: syntax error, unexpected T_DO, expecting T_STRING in ...
//same on call
$obj->do()
Parse error: syntax error, unexpected T_DO, expecting T_STRING or T_VARIABLE or '$' in
Gearman Uses a "do" function by the way.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
“do”是保留关键字:http://www.php.net/manual/en/reserved。 keywords.php
在同一页面的评论中,您会看到用户提到了解决此问题的方法。请记住,必须小心使用此方法:
所以您会看到,您可以通过使用
__call
在任何类中使用do
方法(或其他保留字)超载。从外部来看,该方法与传统定义的方法没有什么区别。"do" is a reserved keyword: http://www.php.net/manual/en/reserved.keywords.php
On that same page, in the comments, you see a user mention a way around this. Bear in mind that this method must be used with care:
So you see, you could use a
do
method (or some other reserved word) in any class by using the__call
overload. Externally, this method would be indistinguishable from a traditionally defined method.将函数命名为关键字是一个坏主意。它的名字也可能更糟糕,因为
do
的描述性不强。选择一个更好的名字。
Its a bad idea to name a function that is a keyword. Its also, maybe even worse name because
do
isn't very descriptive.Choose a better name.
gearman 是一个 pecl 扩展,用 c 编写。因此,它不会被 php 解析器解析。 PHP 实际上允许您调用 do() 方法,但不会让您在声明内容时定义或使用此保留关键字进行任何其他操作。如果你看一下 gearman 代码,你会注意到:
所以他们就是这样做的,你不能从 php 本身做到这一点
gearman is a pecl extension, written in c. as such, it is not parsed by the php parser. PHP actually allows you to call a do() method, but wont let you define or use this reserved keyword for anything else when declaring stuff. If you look at the gearman code, you will notice:
so that's how they did it and you cant do it from php itself