我可以为我的函数和类使用PHP保留名吗?

Cip*_*anu 12 php class function reserved

我想创建一个名为"new"的函数和一个名为"case"的类.

我可以用PHP做到吗?

Lig*_*ica 28

, 不能.感谢上帝.

  • 它可能非常有用,例如看看rails控制器 (2认同)
  • @Alexcp:如果您的目标是修改代码库,混淆每个人的语法突出显示框并让其他开发人员发疯,那么这可能非常有用。 (2认同)

Ben*_*min 23

实际上,虽然定义这样的方法导致解析错误,但使用它不会,这允许某种变通方法:

class A {
    function __call($method, $args) {
        if ($method == 'new') {
            // ...
        }
    }
}

$a = new A;
$a->new(); // works!
Run Code Online (Sandbox Code Playgroud)

可追溯到2004年的相关功能请求仍然有效.

编辑2016年1月

从PHP 7开始,由于Context Sensitive Lexer,现在可以使用目前受限制的关键字来命名您的方法:

class Foo {
    public function new() {}
    public function list() {}
    public function foreach() {}
}
Run Code Online (Sandbox Code Playgroud)

但是,你仍然无法为你的课程命名Case.

  • 我们都知道目前*所说的文件*,但是总是在进行讨论,并不是所有人都像你在这个问题上那样有毒.事实是,当使用保留关键字定义方法时,引发解析错误之间存在很大的不一致,而使用此方法名称不会引发任何错误.因此,将来很可能允许使用保留关键字,因为从解析器的角度来看,使用它们的上下文使它们与原始含义区别开来. (2认同)
  • 对.但愿如此. (2认同)