4

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

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

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

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

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

4

2 回答 2

5

You can use __call() method to invoke private or public _list() method which implements your functionality.

/**
 * 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();
    }
}
于 2012-11-12T16:39:51.030 回答
3

对于变量名,您可以使用括号符号:

${'array'} = "test";
echo ${'array'};

但是 PHP 没有提供转义函数名的方法。

如果您想要一种“用户定义”的方式来解决这个问题,请查看以下评论​​:

http://www.php.net/manual/en/reserved.keywords.php#93368

于 2010-02-20T16:12:54.010 回答