
Laravelの初心者だけど、勉強を進めていたら、namespaceという文言をよく見かけるようになったけど、かっこいい響きだけど意味が分からないなあという方に、ざっくりと意味をご紹介します。
namespace(名前空間)は、ボクもLaravelを勉強していてよく見かけるようになり、いまいち意味不明だなあと思っていました。
Laravelの本を見ても、サイトを見ても、namespaceについて、いちいち説明していないです。
それくらいphpの基礎なことなのだろうけど、Laravel初心者にとっては、ボクみたいにphpも初心者なことがありえますので、ちゃんと説明入れて欲しいのが本音ですね。
それでは、namespaceについてみていきましょう。
namespace(名前空間)とは

namespaceを理解するために、まず、namespaceという仕組みが存在していなかった時の不便さについてご紹介します。
namespaceという仕組みができた理由

namespace(名前空間)が無かったときは、同じクラス名が付いているクラスを実行すると、どっちのクラスなのか分からず、クラス名の重複のせいでエラーが出ていたそうです。
少ないコード、プログラムであれば、同じクラス名を使わないように管理したり、クラス名の重複によるエラーが出たら、クラス名を変更したり、コードが適用されるスコープを限定するなどして、同じクラス名であっても実行の重複を避ける工夫などしていたと思います。
でもなんか聞いただけでもけっこうメンドイですね。
そこで登場したのが、namespaceという仕組みです。
namespaceはフォルダの階層・パスを明示することで他と区別する仕組み

クラスの重複を簡単に避ける仕組みとして登場したのが、namespaceなんです。
例えば、
「 http/hoge/hogehoge 」というフォルダの中にファイルがあり、
そのファイルの中に「 index 」というクラス名があるとします。
その場合、「 index 」を書いているファイルの先頭に
「 namespace http\hoge\hogehoge; 」と宣言することによって、
「 http/hoge/hogehoge 」内のindexクラスだと
認識される仕組みとなっています。
要は、このクラスはどこどこのフォルダに入っているクラスだと、パスで指定することで、場所の区分けがはっきりして、区別される仕組みです。
そのため、もうひとつ以上同じクラス名がある場合も同様に、◯◯のフォルダ内の◯◯ファイル内のクラス名だとnamespaceでパスを明示することで、同じクラス名でも、重複を避けることができるようになっています。
これが、ざっくりですが、namespaceの使う理由と、意味となります。
これまたLaravel初心者のボクがつまづいた、use宣言についても、他の記事で
ご紹介したいと思います。
コメント