PHP名前空間概念分析、PHP名前空間分析

WBOY
リリース: 2016-06-16 09:16:41
オリジナル
1148 人が閲覧しました

PHP 名前空間の概念分析、php 名​​前空間分析

1. PHP の名前空間とは何ですか?

ネームスペースとは何ですか? 「大まかに言えば、名前空間は物事をカプセル化する方法です。この抽象的な概念はさまざまな場所で見ることができます。たとえば、オペレーティング システムでは、ディレクトリは関連ファイルをグループ化するために使用されます。ディレクトリ内のファイルの場合、名前空間は、たとえば、ファイル foo.txt はディレクトリ /home/greg と /home/other に同時に存在できますが、foo.txt ファイルにアクセスする場合、同じディレクトリに 2 つの foo.txt ファイルが存在することはできません。ディレクトリ /home/greg の外側では、/home/greg/foo.txt を取得するために、ファイル名の前にディレクトリ名とディレクトリ区切り文字を置く必要があります。この原則は、名前空間としてプログラミングの分野に適用されます。」 - 名前空間の概念。

2. PHP 名前空間を理解するにはどうすればよいですか?

本質的に、名前空間はコンテナです。クラス、関数、変数をこのコンテナに入れることができ、それらは同じ名前空間内で無条件に相互にアクセスできます。名前空間の外側で、他の名前空間に含まれる項目を呼び出すには、他の名前空間を参照またはインポートする必要があります。

名前空間の概念は、シェルのファイル ディレクトリと同じです。現在のディレクトリ内のファイル名によってすべてのファイルに直接アクセスできます。他のディレクトリ内のファイルにアクセスする必要がある場合は、相対パスまたは絶対パスを入力する必要があります。
引用方法:

namespace foo;

 class Foo {   

         public function foo()   

             {        

                  return \top\namespace\bar\Bar::fuck();    

              }

             }
ログイン後にコピー

インポート方法:

namespace foo; 

use top\namespace\bar\Bar; 

 class Foo {

        public function foo() 

            {        return Bar::fuck();  

            }

           }
ログイン後にコピー

インポートは、ターゲット クラスを現在の名前空間にコピーすることと同じです。

3. PHP 名前空間の実際の用途は何ですか?

名前空間の存在は、次の 2 つの問題を解決するためにあります。

1. ユーザーが作成したコードと、PHP の内部クラス/関数/定数またはサードパーティのクラス/関数/定数の間で名前が競合します。

2. 非常に長い識別子名 (通常、最初の種類の問題を軽減するために定義される) のエイリアス (または短い) 名を作成し、ソース コードの可読性を向上させます。

4. いくつかのヒント

1. 同じ空間内のクラスは互いに直接呼び出し、同じファミリーに属します。たとえば、Laravel の PageController クラスでは、Page::all() のようなコードを直接記述して Page モデルを呼び出すことができます。これは、どちらもトップレベルの名前空間の下にあるためです。

2. クラスがトップレベル以外の名前空間に存在する場合、そのクラスは、同じファミリーに属している、現在の名前空間内の他のクラスを「参照」または「インポート」せずに呼び出すことしかできません。サブネームスペースはすべて別のネームスペース、別のコンテナであり、コンテナ間の関係以外に特別な関係はありません。

3. Laravel は自動読み込み (オートロード) にクラスマップ メソッドを使用します。PHP には名前空間という高度な機能がありますが、これは単なる論理的な関係であり、require ファイルが依然として必要です。このクラスとファイルの対応関係は /vendor/composer/autoload_classmap.php に存在し、composer dump-autoload は毎回再コンパイルされて生成されます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!