※この記事は読者によって投稿されたユーザー投稿のため、編集部の見解や意向と異なる場合があります。 また、編集部はこの内容について正確性を保証できません。
ヒューマンリソシア株式会社はコラム「名前空間について その3」を公開しました。 今回は「グローバル空間」について、少し理解を深めていきましょう。 例えば。 全体的に「ArrayObjectでいい感じの拡張を思いついたから、継承クラスを作ってみよう」とか思いついてみます。 早速、サンプルコードを書いてみましょう。 namespace my { class MyArrayObject extends ArrayObject { } } 「Fatal error: Class ‘my\ArrayObject’ not found in 」………え? なんでエラー? っていうかArrayObjectに勝手にmyの名前空間とか付けないで欲しいんだけど…という状況に、 割とあっというまに遭遇いたします。 ArrayObject自体は、以前にやりましたが、SPLにある既存のクラスですね。 …さて、どうしましょう? PHPに「元々」あるものは、「グローバル空間」という名前空間に紐付いています。 で、この「グローバル空間」にあるものは、名前の先頭に \ をつけると、 名前空間の内部からであってもグローバル空間の名前を指定することが出来るようになります。 では、やってみましょう。 namespace my { class MyArrayObject extends \ArrayObject { } } はい、今度は問題なくいけるようになりました。 この辺り、もう少し深く掘り込んでみましょう。 まず、グローバル空間にある「関数」は、必ずしも「グローバル空間」を指定しなくても動きます。 (my.php) namespace my { class MyArrayObject extends \ArrayObject { public function hoge() { $fp = fopen(__FILE__, “r”); var_dump($fp); } } } これを動かしてみます。 この続きは以下をご覧くださいhttp://resocia.jp/column/3013/
この記事のキーワード

人気記事トップ10

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