ホームページ  >  記事  >  バックエンド開発  >  PHP 名前空間を始める

PHP 名前空間を始める

WBOY
WBOYオリジナル
2016-08-08 09:29:41904ブラウズ

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

" ネームスペースとは何ですか? 大まかに言えば、ネームスペースは物事をカプセル化する方法です。この抽象的な概念は多くの場所で見ることができます。たとえば、オペレーティング システムでは、ディレクトリは関連ファイルをグループ化するために使用されます。 、たとえば、ディレクトリ内のファイルの名前空間の役割を果たします。 foo.txt はディレクトリ /home/greg と /home/other の両方に存在できますが、2 つの foo.txt ファイルを同じディレクトリに存在することはできません。さらに、ディレクトリ /home/greg の外にある foo.txt ファイルにアクセスする場合、/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. 非常に長い識別子名のエイリアス (または短い) 名を作成します (通常、最初のタイプの問題を軽減するために定義されます)。ソースコードの可読性を向上させる

現在非常に人気のある Composer は、名前空間ベースのパッケージマネージャー/依存関係マネージャーです。同様に、今日の Laravel の成功は主に PHP5.3 の人気によるものであり、これは右に起こったものです。 https://packagist.org/ からさまざまなパッケージをダウンロードします。 yum、npm、または gem に似た、composer パッケージ。

4. いくつかのヒント

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

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

3. Laravel は自動ロード (autoload) にクラスマップメソッドを使用しますが、これは論理的な関係にすぎず、require ファイルが必要です。このクラスとファイルの間には対応関係が存在します /vendor/composer/autoload_classmap.php 、composer dump-autoload は毎回再コンパイルされて生成されます。

転載元: http://lvwenhan.com/php/401.html 以上、内容の側面も含めて PHP 名前空間の概要を紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。

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