2016-08-15 16 views
0

Laravel 4アプリケーションでは、Publicという名前空間にコントローラを作成できますか?このように:私はPublicControllersに名前空間を変更した場合、それが正常に動作し、しかし'Public'と呼ばれるPHPネームスペース

syntax error, unexpected 'Public' (T_PUBLIC), expecting identifier (T_STRING) or \ (T_NS_SEPARATOR) or '{'

<?php namespace Public; 

class MyController extends \BaseController { 

} 

これをやってくれエラーになります。つまり、Publicは名前空間として使用できない予約語ですか?

+1

あなたは実際に試してみると 'Public'名前空間を作成できますが、それを動作させるにはあらゆる種類のハッカーに頼らざるを得ません。 (たとえば、クラス名を使用する場合は、クラス名を含む文字列変数にする必要があります。)価値がありません。 – cHao

+1

この質問が2つの声調を受け取った理由を知りたいです。それは明確かつ具体的な質問であり、受け入れられる答えは非常に有益です。問題は何ですか? – flyingL123

+0

少し遅れていますが、ここでは詳細な答えがあります。リンク先はhttps://stackoverflow.com/a/44225572/2310637 – MrMAG

答えて

6

public is a reserved word in PHP:名前空間がここでは具体的に言及されていないものの

These words have special meaning in PHP. Some of them represent things which look like functions, some look like constants, and so on - but they're not, really: they are language constructs. You cannot use any of the following words as constants, class names, function or method names. Using them as variable names is generally OK, but could lead to confusion.

我々はthe PHP grammarを見て、名前空間はT_STRING sから作られることが期待されていることがわかりますT_NS_SEPARATOR S(バックスラッシュ)で一緒に参加しました。 publicには独自のトークンタイプ(エラーメッセージに記載されているT_PUBLIC)があるため、適切な選択肢ではありません。

これはLaravelとは関係ありません。

+0

です。ありがとうございます。私はあなたが正しいと確信しています。私はこの名前空間から離れます。好奇心からだけでなく、 "定数、クラス名、関数またはメソッド名"のどれが名前空間であるか? – flyingL123

+0

@ flyingL123、名前空間はこれらのもののどれもありません。私の更新された答えを見てください。 – Chris

関連する問題