好吧,这是非常出乎意料的,让我很恼火。我的所有类(class)中都有名为 default() 的函数。但是,由于某种原因,我不能调用它。我想这是因为 switch 语句中的“default:”(我根本不使用)。

我真的不能在 php 中命名我的函数 default() 还是我做错了什么?

这是错误:

Parse error: syntax error, unexpected T_DEFAULT, expecting T_STRING in
C:\Users\Jinxed\Desktop\WebTrgovina\app\c\Controller.c.php on line 8

这是有问题的代码:
<?php
abstract class Controller {
    protected $view;
    function __construct() {
    }
    abstract function default();
    function getView(){
        return $this->view;
    }
}

当我将 default 重命名为其他名称时,代码工作正常,但这很烦人,是否有任何解决方案将函数命名为 default()?

最佳答案

不能将保留字用作类函数。但是,您可以使用 __call :

<?php
abstract class Controller {

    public function _default($some, $args) {}

    public function __call($name, $arguments) {
        if ($name === 'default') {
            //return call_user_func_array(array($this, '_default'), $arguments); // has args
            return $this->_default(); // simpler
        }
    }
}

这将允许您执行 $foo->default() 。不过,更好的主意是不要选择依赖于对方法名称使用保留字的实现/api。

关于php - 在 php 中不能有名为 default 的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10395930/

10-14 15:26