php - 是否有可能 "escape"PHP 中的方法名称,以便能够拥有与保留关键字冲突的方法名称?

标签 php escaping keyword identifier reserved-words

我在 PHP 中做 MVC,我想在我的 Controller 中有一个 list() 方法,以具有 URL/entity/list/parent_id,以显示属于该父级的所有“x” .

但是,我不能使用名为 list() 的方法,因为它是 PHP 保留关键字。

例如,在 VB.Net 中,如果我需要一个名称与保留关键字冲突的名称,我可以将其包装在 [reserved_name] 中。
在 SQL 中,您可以做同样的事情。
在 MySQL 中,您使用反引号 `

PHP 中是否有一些语法指定“将其视为标识符,而不是关键字”?

(注意:我知道我可以在没有 list() 方法的情况下使用路由来执行此操作。我也可以简单地调用其他操作。问题是 PHP 是否提供这种转义)

最佳答案

您可以使用__call() 方法来调用实现您的功能的私有(private)或公共(public)_list() 方法。

/**
 * This line for code assistance
 * @method  array list() list($par1, $par2) Returns list of something. 
 */
class Foo 
{
    public function __call($name, $args) 
    {
        if ($name == 'list') {
            return call_user_func_array(array($this, '_list'), $args);
        }
        throw new Exception('Unknown method ' . $name . ' in class ' . get_class($this));
    }

    private function _list($par1, $par2, ...)
    {
        //your implementation here
        return array();
    }
}

关于php - 是否有可能 "escape"PHP 中的方法名称,以便能够拥有与保留关键字冲突的方法名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2302771/

相关文章:

bash - 如何在 bash 中回显文字字符串 "-e"(仅此而已)?

mysql - 在什么情况下使用 MySQL 关键字 'one'?

objective-c - 变量声明中const关键字定位的意义

php - 如何在 Laravel 中从 HTML 表单填充字段?

java - 解耦 JSON 服务中 unicode 转义导致的安全漏洞?

python - 如何在python中存储包含两个单引号( ' ) and double quote( ")的字符串

javascript - Javascript Package 关键字的用途是什么?

php - 不仅返回小写字母和数字,还返回符号和大写字母的哈希函数

php - fatal error : Namespace declaration statement has to be the very first statement in the script

php - apache2 多个虚拟主机,但只有第一个有效