質問: phpの名前空間について php5.3~からの名前空間について質問です。 この名前空間、私は最初javaやperlなどのクラスやパッケージ的な動き・・・・・つまり 実際にディレクトリに分けて分割して管理するようなものだと思っていたのですが foo/bar/hoge.java import foo.bar; で実際に new foo.bar.hoge.(); としないといけない箇所を new hoge(); だけで処理できるという動き・・・。 perlでもパッケージやクラスなんかは似たような動きですよね? でもphpの名前空間は、ディレクトリにわけたりしないようなのですが、 これは、意味があるのでしょうか? phpの場合はただ、関数やクラスに別名をつけれるだけですか? 特に、必要とは思えないのですが 識者の方ご教授下さい。
回答: 実際にまだ名前空間を使った開発はした事がないのですが・・・ 今までと同じ new hoge()というコードは、同じ名前空間に属する場合のみです。 名前空間の外からであれば修飾子が必要になります。 同じ名前空間でクラスインスタンスを作るような場合は一つのモジュールとして完結できるような状態になるかと思います。zendframeworkなんかがまさしくその典型のようなものだと思います。最終的にひとつのコンポーネントとして提供する事を想定した作りに適しているんじゃないでしょうか。 > でもphpの名前空間は、ディレクトリにわけたりしないようなのですが、これは、意味があるのでしょうか? 分けなくても実装は可能ですが、実際に名前空間を利用するようなある程度の規模の開発になれば、必然的に分ける事になりそうな気がします。 必要と感じないのは、規模感からでしょうか・・・ perlは知識がないのでわからないのですが、使い方・概念はjavaと同様に考えてよいと思います。 私は識者ってわけじゃないですが、多少でも参考になれば。 下記のサイトが私にはとても参考になりました。 http://www.ibm.com/developerworks/jp/opensource/library/os-php-5.3namespaces/