名前空間について その4

※この記事は読者によって投稿されたユーザー投稿のため、編集部の見解や意向と異なる場合があります。また、編集部はこの内容について正確性を保証できません。

ヒューマンリソシア株式会社はコラム「名前空間について その4」を公開しました。
今回は、より実践的なところや、「出来るけどやるには細心の注意が必要」なところなど、
いくつかより込み入った辺りに踏み込んでみましょう。

さて。色々と名前空間について見てきました。
次回、ラストは、少し「出来るけど推奨されない所」など、更にもうちょっと突っ込んだ所に踏み込んでみましょう。

まず、先に定数についてやっていきたいと思います。
名前空間を意味する __NAMESPACE__ という定数があります。実際に、動かしてみましょう。

(my.php)
namespace my {
var_dump( __NAMESPACE__ );
}

require_once(‘my.php’);
//
var_dump( __NAMESPACE__ );

結果は以下のようになるかと思います。

string(2) “my”
string(0) “”

こんな風に「現在の名前空間の名前」を、この定数で把握することが出来ます。

次に。
当然といえば当然ですが、名前空間を使うときは、名前空間の文字列を「変数の中に入れる」事もできます。

(my.php)
namespace my {
class hoge {
}
}
namespace me {
class hoge {
}
}

require_once(‘my.php’);
if (0 == mt_rand(0,1)) {
$name = ‘my';
} else {
$name = ‘me';
}
$class_name = $name . ‘\\hoge';
$obj = $class_name;
var_dump($obj);

今回は乱数を使ってちょっとばっかり遊んでますが、
考え方によっては色々と「非常に実用な」事も出来るかと思います。
変数に入れる時は、バックスラッシュ(\)をエスケープする必要がある点だけ気をつけておきましょう。

さて…今回を含めていくどか書いておりますが。
実際に実務で使う場合には「1ファイルで2つ以上の名前空間の設置」は、出来るけど非推奨になります。
非推奨にはなりますが、文法としては覚えておいても良い…のですが、
非推奨であることはしっかりと意識しておきましょう。

非推奨ついでに。
「名前空間宣言と同じ箇所にグローバルスコープなものを書きたい」場合、一応、こういう書き方ができます。

この続きは以下をご覧ください
http://resocia.jp/column/3022/

この記事が役に立ったらシェア!
メルマガの登録はこちら Web担当者に役立つ情報をサクッとゲット!

人気記事トップ10(過去7日間)

今日の用語

robots.txt
ロボット型の検索エンジンが自分のページを登録しないようにするためにサイト管理者が ...→用語集へ

インフォメーション

RSSフィード


Web担を応援して支えてくださっている企業さま [各サービス/製品の紹介はこちらから]