小写的保留关键字会引发错误。为什么?

lower-cased reserved keyword throws an error. Why?

我有这个功能

//admin
$router->route['/admin']->route['default'] = function() { //line 51
    if (isLoggedIn())                                     //line 52
        goTo('CMS');                                      //line 53 <---
    else                                                  //and so on
        goTo('login');  
};

但是我有一个解析错误:语法错误,意外的'(',在第 53 行 /path/index.php 中期待 T_STRING
什么是错误?

goto 是保留字。您可以 NOT 覆盖它,无论您 fiddle 有多少 upper-/lower-case 变化:

php > function goto() { echo 'foo'; }
PHP Parse error:  syntax error, unexpected 'goto' (T_GOTO), expecting '(' in php shell code on line 1
php > function goTo() { echo 'foo'; }
PHP Parse error:  syntax error, unexpected 'goTo' (T_GOTO), expecting '(' in php shell code on line 1
php > function GOTO() { echo 'foo'; }
PHP Parse error:  syntax error, unexpected 'GOTO' (T_GOTO), expecting '(' in php shell code on line 1

您一开始就不应该定义 goTo 函数。

您需要重命名 goTo()*,例如进入 forwardTo(),因为 goto 被 PHP 保留:http://php.net/goto

奇怪,PHP 并没有就此警告您。

此外,我建议遵循 PSR 编码标准: http://www.php-fig.org/psr/psr-2/

*@peter-featherstone 的要点:函数名称不区分大小写。

希望对您有所帮助