質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Namespace

各要素の名前の重複による衝突が起こらないよう、一意の名前をつけなければならない範囲のことであり、また、プログラミングにおける識別名を付加する機能のをNamespace(名前空間)と呼ぶ。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

1739閲覧

名前空間(Namespace)とは?(PHP)

pwd

総合スコア36

Namespace

各要素の名前の重複による衝突が起こらないよう、一意の名前をつけなければならない範囲のことであり、また、プログラミングにおける識別名を付加する機能のをNamespace(名前空間)と呼ぶ。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2014/11/02 13:23

PHPの名前空間とは、何でしょうか。
一般的に、名前空間とはどのようなもののことを指しますか。

可能であれば、実例を含んだ答えを頂けると助かります。
どなたかよろしくお願いいたします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

mickey_m

総合スコア188

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問