phpの名前空間とは
同じ名前の関数やクラスがあった場合に衝突しないようにするのが名前空間。
名前空間を定義する
名前空間を定義するには
namespace 名前空間名;
とする。
この時、namespaceより前にphpの命令文やHTMLを書いてはいけない。
例えば「test.php」に「test」、「test2.php」に「test2」という名前空間を定義するには以下のような感じ。
// test.php
namespace test;
function sayHello() {
echo 'hello from test.php'
}
// test2.php
namespace test2;
function sayHello() {
echo 'hello from test2.php'
}
これで、「test」、「test2」という名前空間ができた。2つのファイルには同じ名前の関数 sayHello()がある。
名前空間を分けると同じ名前の関数も別々のものとして扱うことができるようになる。
名前空間を使う
名前空間を定義したので「index.php」からこの名前空間を使ってみる。
名前空間を使うには、まず名前空間を定義したファイルを読み込んで「\」(バックスラッシュ)を使う。
require_once '名前空間を定義したファイル名.php'
名前空間の名前(バックスラッシュ)関数名等
さっき定義した「test」「test2」の名前空間を利用するにはこんな感じ。
// index.php
require_once 'test.php';
require_once 'test2.php;
test\sayHello();
test2\sayHello();
こうすることで同じ名前の関数を扱うことができるようになる。