PHP如何创建一个名为"do"的函数?

bma*_*man 2 php function reserved-words

我看到一个名为"do"的方法库

public function do
Run Code Online (Sandbox Code Playgroud)

完全错误解析器解析错误:语法错误,意外T_DO,期待T_STRING ...

//same on call 
$obj->do() 
Run Code Online (Sandbox Code Playgroud)

解析错误:语法错误,意外T_DO,期待T_STRING或T_VARIABLE或'$'in

Gearman顺便使用"do"功能.

http://www.php.net/manual/en/gearmanclient.do.php

Chr*_*ker 11

"do"是保留的关键字:http://www.php.net/manual/en/reserved.keywords.php

在同一页面上,在评论中,您会看到用户提及解决此问题的方法.请记住,必须小心使用此方法:

// Now define a __call() method (requires PHP > 5.2.3 to take effect)
public function __call($func, $args)
{
    switch ($func)
    {
        case 'list':
            return $this->ls((isset($args[0]))? $args[0]: null);
        break;
        case 'unset':
            return $this->rm($args[0]);
        break;
        default:
            trigger_error("Call to undefined method ".__CLASS__."::$func()", E_USER_ERROR);
        die ();
    }
Run Code Online (Sandbox Code Playgroud)

所以你看,你可以do通过使用__call重载在任何类中使用方法(或其他一些保留字).在外部,这种方法与传统定义的方法无法区分.

  • 谢谢我知道这是一个保守的词,你回答了我的问题. (2认同)

Dan*_*ite 7

命名一个关键字函数是个坏主意.它也可能更糟糕,因为do它不是很具描述性.

选择一个更好的名字.

  • @Daniel这是一个警察的答案.他问这是怎么可能的,不管他应该或不应该. (3认同)