好吧,这是非常出乎意料的,让我很恼火。我的所有类(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/