ホームページ  >  記事  >  バックエンド開発  >  PHP名前空間について(サンプルコードと合わせてシンプルで分かりやすい)

PHP名前空間について(サンプルコードと合わせてシンプルで分かりやすい)

亚连
亚连オリジナル
2018-05-17 17:21:191705ブラウズ

以下は私がまとめた PHP の名前空間です。興味のある学生はご覧ください。

最初のファイル
cat.class.php

<?php
namespace Animals\Cat;        
class Cat    
{        
    public function speak()        
    {            
        echo &#39;miaow&#39;;        
    }    
}    
    function root()
    {        
        return &#39;cat.class.php&#39;;
    }
?>123456789101112131415

2番目のファイル
dog.class.php

<?php
namespace Animals\Dog;    
    class Dog
    {
        public function speak()
        {
            echo &#39;woof&#39;;
        }
    }    class Cat
    {
        public function speak()
        {
            echo &#39;miaoth&#39;;
        }
    }    function root(){
        return &#39;dog.class.php&#39;;
    }
?>1234567891011121314151617181920212223

index.php
3番目のファイルは上記の名前空間をロードするファイル

<?php
    namespace Index;    
    require_once &#39;cat.class.php&#39;;    
    require_once &#39;dog.class.php&#39;;    
    use Animals\Cat;    
    use Animals\Dog as Snoopi;
        
    //完全限定名
    $cat1 = new \Animals\Cat\Cat();  
    $cat1->speak();    
    echo &#39;<br/>&#39;;    
    $cat2 = new \Animals\Dog\Cat();    
    $cat2->speak();    
    echo &#39;<br/>&#39;;    
    $dog1 = new \Animals\Dog\Dog();    
    $dog1->speak();    
    echo &#39;<br/>&#39;; 
       
    //非完全限定名
    $cat3 = new Cat\Cat();    
    $cat3->speak();    
    echo &#39;<br/>&#39;; 
       
    //别名 *别名和非完全限定名 不能同时使用
    $dog3 = new Snoopi\Dog();    
    $dog3->speak();    
    //不止函数,该命名空间下的任何可用资源都可调用[函数、变量、常量等等]
    echo Snoopi\root();    
    echo &#39;<br/>&#39;;
?>12345678910111213141516171819202122232425262728293031323334

Name 空間クラスファイル ディレクトリ システムと比較できます
new 名前空間内のクラス [または関数、変数など] は、特定のディレクトリ内のファイルの内容を呼び出します
完全修飾名は、ファイルの内容を検索しますパスに基づく
Non 完全修飾名は
use と同等です。名前空間を導入する場合、変数のデフォルトは最後の部分空間になります。
as キーワードを使用して名前を設定します。変数はエイリアスであるため、エイリアスと非完全修飾名を同時に使用することはできません (1 回の use[+as] で生成できるエイリアスは 1 つだけであるため)。
アナログ ファイル ディレクトリ システム:
ファイルの場所: /root/path/file/fileContent;
/root/path/file を使用します。つまり、file='/root/path/file' なので、ファイルのパスは file='/root/ になります。 path/file'したがって、ファイルのパスは file/fileContent です
*そして、index.php の名前空間インデックスは、現在のファイルの場所を示すことと同等です
したがって、index.php のファイルコンテンツが

<?php
    require_once &#39;cat.class.php&#39;;    
    require_once &#39;dog.class.php&#39;;    
    use Animals\Cat\Cat;#引入该命名空间下的类
    $cat4 = new Cat();    
    $cat4->speak();
    root(); 
?>123456789

に変更されると、名前空間 AnimalsCat の Cat クラスのみがロードされ、root() 関数は「ロードされていない」と同等です
したがって、操作はエラーをスローします: root() 関数は宣言されていません

上記は PHP の名前空間です皆さんのためにまとめましたので、今後皆さんのお役に立てれば幸いです。

関連記事:

PHP 名前空間 (コードと組み合わせた詳しい回答)

PHP 名前空間と自動読み込みの違いを詳しく紹介

PHP のスコープをコードで詳しく紹介

以上がPHP名前空間について(サンプルコードと合わせてシンプルで分かりやすい)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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