※この記事は読者によって投稿されたユーザー投稿のため、編集部の見解や意向と異なる場合があります。 また、編集部はこの内容について正確性を保証できません。
ヒューマンリソシア株式会社はコラム「名前空間について その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/

人気記事トップ10

人気記事ランキングをもっと見る