2016-09-14 5 views
0

私はこの機能 lower-cased予約キーワードはエラーをスローします。どうして?

//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を期待することは何のエラー構文エラーを

+3

'goto'はPHP言語の構文であり、関数ではないため、http://php.net/gotoです。言語構造を独自のバージョンで置き換える/上書きすることはできません。 'function echo($ x){print($ x); } echo( 'hi mom') 'は、まったく同じエラーを生成します。 –

+0

しかし私はそれをラクダに入れました。エラーも異なるので、(私の謙虚な意見では)これは問題ではありません –

+1

そうですか? PHPの変数名でのみ大文字と小文字が区別されます。他のほとんどはそうではありません。 –

答えて

2

gotoは予約語であるあなたが関係なく、あなたは大文字/小文字のバリエーションをいじるどのくらいしないオーバーライドそれ、することができます。

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関数を定義することができます。

+0

これは、パーサーが大文字と小文字を区別しないことを意味しますか? – peter

+0

は変数のみです。 '$ foo'と' $ FOO'は全く異なるものです。 'function foo()'と 'function FOO()'は同じです。 –

+0

ああ、そうだ。まだ私には変わっているようです。 – peter

0

goTo() *の名前を変更する必要があります。 gotoはPHPによって予約されているため、forwardTo()にあります。http://php.net/goto

奇妙なことに、PHPはそれについて警告していません。

は、さらに私は、PSRコーディング標準に従うことをお勧めします。 http://www.php-fig.org/psr/psr-2/

*良い点を@ピーター・フェザーストーンから:関数名は大文字と小文字を区別しません。

関連する問題