のーずいだんぷ

主に自分用メモですが、もしかしたら誰かの役に立つかもしれません

PHPのnamespace(名前空間)について

はじめに

Pythonにはなく、ほかの言語ではある程度一般的な概念としてnamespaceがあるが、 requireやincludeといった宣言との使い分けがよくわからなかったのでそのメモ

requireとinclude

ざっくりいうと読み込む対象が読み込めなかった場合に...

  • 警告のみで継続->include
  • 中断->requrie

という違いなようだ。 またrequireに関してはrequire_onceもあり、こちらは既に読み込み済みの場合は多重で読み込むことで発生するバグを防ぐことが可能であるので、 一般的にはrequire_onceを使う場面のほうが多いように感じる。

namespaceの意義

useによる宣言で、クラスもしくは名前空間の指定ができる。つまり...

  • requireとinclude -> ファイル指定
  • use (namespace) -> 名前空間もしくはクラス

と端的に言えそうだ。

どちらを使うべきか

大抵他ファイルで定義しているクラスを読み込むことが一般的だと思うので、 メインではuseを使うのが良さそう。積極的に名前空間を活用することで、他ファイルとの宣言名の衝突への配慮はかなり少なくて済むと思うので。

それ以外への対処はrequireを使って書く、というのが良いのかもしれない。

その他

詳しくは要調査。とりあえずの現段階の知識として残しておく

参考

www.php.net

www.php.net