ざっくり言うと
中身は全然違うけど名前が同じファイルは同じディレクトリに複数枚共存することはできない(めっちゃ当たり前やんけ)。
PHP(やLaravel)でも同様に、中身が別で名前が同じメソッドやプロパティは同じファイル内に共存することはできない。
これを解決するために使うのが「名前空間namespace」やで。
前提や問題点
例えば2人の「潤」という名前の人が同じ部屋にいたとする。
そこにスタッフが入ってきて「潤さん、出番です!」と言った。
当人も周りの人もどっちの「潤」さんが呼ばれたのか、これだけだと全く分からない状態が起きる(目線とかは一旦抜きにして)。
区別できるようにしたらええやん
これを解決するために、同じ部屋にいる2人の潤さんに苗字を導入しようと番組ディレクターが言い出す。
イケメンな方の潤さんには「松本」という苗字を与えて、面白い方の潤さんには「名倉」という苗字を与えよう!
これで番組スタッフも「松本潤さん、出番です!」と言えば、どっちの「潤」が呼ばれたかすぐに分かるし、石原さとみとの大事なキスシーンなのに面白い方の潤がキスしなくて済む。
名倉潤と石原さとみがキスするようなエラーは必ず防ぎたい
プログラミングでも一緒で、中身や処理が全く別なのに名前が一緒なメソッドやプロパティが同じファイル内に共存することがある(requireとかで別のファイルを読み込んだり、useで別のクラスを読み込んだり)。
それを阻止するためにnamespaceを導入して「この2つのメソッドは名前が一緒だけど別物だよ!」と識別させることができる👍
余談
名前が重複している芸能人の件で、ほかにも「ひろゆき(eg. 宮迫博之、西村博之、矢部浩之などなど、、、)」も使ってみたかったなぁと。