よろしくお願いいたします。
LaravelやPHPにおいて、phpタグの上部にnamespaceとuseという箇所がございます。
こちらの理解が未だできていないので、ご質問させていただければと思っております。
まずnamespaceですが、二つのファイルに同じ関数名がある場合などに、namespaceを宣言しておくことで別ファイルなどからrequire_onceした際に以下のように呼び出しができると思うのですが....
*例として
php
1<?php 2namespace test; 3 4function foo() { 5 return "Hello World"; 6} 7?> 8 9上記のような関数を別ファイルで... 10 11require_once('test.php'); 12 13echo test\foo();
調べたところ、これで呼び出せるような旨が記載されている情報などありましたが、どうも
namespace箇所に一意の名称(例の場合はtest)を記述しただけだとエラーとなってしまい以下のエラーが出てしまいます。
error
1Namespace declaration statement has to be the very first statement or after any declare call in the script
こちらも調べたところ、namespaceの特性上、phpタグ以下に空白などなく宣言する必要があるとのことで、スペースなどなく記述したのですが、相変わらずエラーが出てしまいます。
そこで、試しにnamespaceの名称を相対パスのような形式で記述(Laravelのコントローラー記述を参考に)したところ、エラーが発生しませんでしたが、echoで呼び出すことができませんでした。
その際の記述は以下
php
1<?php 2namespace \resources\views\test; 3 4function foo() { 5 return "Hello World"; 6} 7?> 8 9上記のような関数を別ファイルで... 10 11echo \resources\views\foo();
疑問点としては、
・そもそも`namespace`にはパスのような形式で記述しなければならないのか。もしくは単に任意の名称を記述するだけで良いのか ・パス形式で記述した際になぜかresourcesの前にバックスラッシュを記述するとエラーせず、記述なしだと前述のエラーが出ておりました。こちらも理解できませんでした。
また、useに関して質問なのですが、リファレンスを見るとuseはエイリアスのようなものらしいのですが、こちらも理解できておりません。
laravelにてprovidersなどのファイルを確認すると例えば
use Illuminate\Database\Eloquent\Model;
上記のような記述があり、何等かのパスのようですが、エイリアスとして省略した名称としては長いし、そもそも何のために用いるのかよくわかりません・・。
当初はnamespaceと連動した何かかと思っていたのですが、捉えがたいです。
大変大味な質問になってしまって恐縮なのですが、助言のほど、お願いできればと思います。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー