検索
ホームページphp教程php手册PHP名前空間概念分析、PHP名前空間分析

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 は毎回再コンパイルされて生成されます。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)