PHPの名前空間とは、何でしょうか。
一般的に、名前空間とはどのようなもののことを指しますか。
可能であれば、実例を含んだ答えを頂けると助かります。
どなたかよろしくお願いいたします
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答1件
0
ベストアンサー
スコープが変数にするようなことを、名前空間は関数とクラスに対して行います。
名前が重複してると忠告することなく、同じプログラムの別々の場所で同じ関数や名前を使うことを許可してくれるんです。
名前空間を人の苗字だと思ってください。
もし、"いちろう"という名前の人が二人いた場合、苗字を使って二人を区別できる、というようなことです。
my_print()関数を使ったアプリケーションを書いたとしましょう。
あなたのmy_print()関数はページの中のすべてのHTMLコードを取り出し、ユーザーに送ります。
後にあなたのアプリケーションは大きくなり、新しい機能を追加したくなったとします。
RSSのフィードを生成するライブラリを追加したとき、このライブラリも最後のフィードを出力するためにmy_print()という関数を使います。
PHPでmy_print()をコールしたとき、my_print()関数かRSSのライブラリのmy_print()関数のどちらであるかどのように識別するのか・・・このような時に名前空間は活躍します。
各my_print()関数を各名前空間の中で宣言すればいいのです。
このようになります。
lang
1namespace HTML; 2 3function my_print() { 4 echo 'HTML!'; 5} 6 7namespace RSS; 8 9function my_print(){ 10 echo 'RSS!'; 11}
呼び出しは、関数名の前に名前空間をつければよいです。
lang
1\HTML\my_print(); 2\RSSLibrary\my_print();
それか、どちらかの名前空間にいることを宣言し、その名前空間のmy_print()をコールすればOKです。
lang
1namespace HTML; 2 3my_print(); # HTML 4\RSS\my_print(); # RSS 5
もし名前空間がなかったら・・・
名前空間がなかったら、何かライブラリに追加するたびにコードの大半を編集しないといけなくなります。もしくは関数の名前をユニークにする必要があります。名前空間があることにより、第三者のコードを自分のプロジェクトに入れたときに名前が重複することも防ぐことができるんです。
投稿2014/11/02 14:04
総合スコア188
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。