質問: よろしくお願いいたします。 `Laravel`や`PHP`において、`phpタグ`の上部に`namespace`と`use`という箇所がございます。 こちらの理解が未だできていないので、ご質問させていただければと思っております。 まず`namespace`ですが、二つのファイルに同じ関数名がある場合などに、`namespace`を宣言しておくことで別ファイルなどから`require_once`した際に以下のように呼び出しができると思うのですが.... *例として ``` 上記のような関数を別ファイルで... require_once('test.php'); echo test\foo(); ``` 調べたところ、これで呼び出せるような旨が記載されている情報などありましたが、どうも `namespace`箇所に一意の名称(例の場合はtest)を記述しただけだとエラーとなってしまい以下のエラーが出てしまいます。 ``` Namespace declaration statement has to be the very first statement or after any declare call in the script ``` こちらも調べたところ、namespaceの特性上、phpタグ以下に空白などなく宣言する必要があるとのことで、スペースなどなく記述したのですが、相変わらずエラーが出てしまいます。 そこで、試しにnamespaceの名称を相対パスのような形式で記述(Laravelのコントローラー記述を参考に)したところ、エラーが発生しませんでしたが、echoで呼び出すことができませんでした。 その際の記述は以下 ``` 上記のような関数を別ファイルで... echo \resources\views\foo(); ``` 疑問点としては、 ``` ・そもそも`namespace`にはパスのような形式で記述しなければならないのか。もしくは単に任意の名称を記述するだけで良いのか ・パス形式で記述した際になぜかresourcesの前にバックスラッシュを記述するとエラーせず、記述なしだと前述のエラーが出ておりました。こちらも理解できませんでした。 ``` また、useに関して質問なのですが、リファレンスを見るとuseはエイリアスのようなものらしいのですが、こちらも理解できておりません。 laravelにてprovidersなどのファイルを確認すると例えば `use Illuminate\Database\Eloquent\Model;` 上記のような記述があり、何等かのパスのようですが、エイリアスとして省略した名称としては長いし、そもそも何のために用いるのかよくわかりません・・。 当初は`namespace`と連動した何かかと思っていたのですが、捉えがたいです。 大変大味な質問になってしまって恐縮なのですが、助言のほど、お願いできればと思います。 よろしくお願いいたします。
回答: ただのPHPの基礎なのでまずはその辺の本読んだほうがいいのでは...。 変な古い本では載ってなさそうだけど。 基礎すぎて回答しようがない。 PHPとLaravelを同時に学習せずまずPHPから。 つまみ食い的に覚えようとしても無理。 Laravel使う段階ではnamespaceは知ってて当然の前提で進む。 (とはいえLaravelで使われだしたのは5.0からだけど)