PHP——ネーミングスペース

2690 ワード

PHPネーミングスペースの役割、なぜネーミングスペースを使うのか
ネーミングスペースの最も明確な目的は、PHPでは2つの関数またはクラスに同じ名前が表示されないことです.そうしないと、致命的なエラーが発生します.この場合、名前の重複を避けるだけで解決できます.最も一般的な方法は、接頭辞を約束することです.
栗を挙げると、プロジェクトにはarticleとmessage boardの2つのモジュールがあり、それぞれユーザーのメッセージを処理するクラスCommentがあります.その後、すべてのユーザーへのメッセージの統計機能を増やしたいかもしれません.例えば、私はすべてのメッセージの数を得たいと思っています.このときCommentが提供するメソッドを呼び出すのは良い方法ですが、それぞれのCommentクラスを同時に導入するのは明らかにだめで、コードがエラーになり、別の場所でどのCommentを書き換えるのもメンテナンス性が低下します.その時はクラス名を再構築するしかありません.私は命名規則を約束しました.クラス名の前にモジュール名を追加しました.このように:Article_Comment、MessageBoard_Comment
名前が長くなっているのが見えますが、それは後でCommentを使うときにもっと多くのコードを書くことを意味します.(少なくとも文字が多くなっています).また、今後、各モジュールに統合機能を追加したり、相互に呼び出したりするには、名前を再構築する必要があります.もちろん、プロジェクトの開始時にこの問題に気づき、命名規則を規定すれば、この問題を回避することができます.もう一つの解決策は、ネーミングスペースの使用を考慮することができます.
基礎ネーミング空間はコードを異なる空間(領域)に分割し、各空間の定数、関数、クラス(サボるために、私の下では要素と呼ばれています)の名前は互いに影響しません.これは私たちがよく言っている「パッケージ」の概念に似ています.
ネーミングスペースを作成するには、namespaceキーを使用する必要があります.


現在のスクリプト・ファイルの最初のネーミング・スペースの前にはコードがありません.次の書き方は間違っています.
//  
//             


//  
//            




なぜ最初のネーミングスペースと言うのですか?同じスクリプトファイルに複数のネーミングスペースを作成できるためです.
次に、2つのネーミングスペースを作成します.ついでに、この2つのスペースにCommentクラス要素を追加します.


異なるスペース間で他の要素を直接呼び出すことはできません.ネーミングスペースの構文を使用する必要があります.


MessageBoard空間でarticle空間のCommentクラスを呼び出すときに、ファイルパスのような構文が使用されていることがわかります.
クラスを除いて、関数と定数の使い方は同じです.次に、2つの空間に新しい要素を作成し、MessageBoard空間に値を出力します.


そして私は確かにArticle空間の要素データを得ました.
サブ空間ネーミング空間の呼び出し構文は、ファイルパスのように理にかなっており、各空間間の関係を記述するためにサブ空間を定義することができます.