以下は私がまとめた PHP の名前空間です。興味のある学生はご覧ください。
最初のファイル
cat.class.php
<?php namespace Animals\Cat; class Cat { public function speak() { echo 'miaow'; } } function root() { return 'cat.class.php'; } ?>123456789101112131415
2番目のファイル
dog.class.php
<?php namespace Animals\Dog; class Dog { public function speak() { echo 'woof'; } } class Cat { public function speak() { echo 'miaoth'; } } function root(){ return 'dog.class.php'; } ?>1234567891011121314151617181920212223
index.php
3番目のファイルは上記の名前空間をロードするファイル
<?php namespace Index; require_once 'cat.class.php'; require_once 'dog.class.php'; use Animals\Cat; use Animals\Dog as Snoopi; //完全限定名 $cat1 = new \Animals\Cat\Cat(); $cat1->speak(); echo '<br/>'; $cat2 = new \Animals\Dog\Cat(); $cat2->speak(); echo '<br/>'; $dog1 = new \Animals\Dog\Dog(); $dog1->speak(); echo '<br/>'; //非完全限定名 $cat3 = new Cat\Cat(); $cat3->speak(); echo '<br/>'; //别名 *别名和非完全限定名 不能同时使用 $dog3 = new Snoopi\Dog(); $dog3->speak(); //不止函数,该命名空间下的任何可用资源都可调用[函数、变量、常量等等] echo Snoopi\root(); echo '<br/>'; ?>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 'cat.class.php'; require_once 'dog.class.php'; use Animals\Cat\Cat;#引入该命名空间下的类 $cat4 = new Cat(); $cat4->speak(); root(); ?>123456789
に変更されると、名前空間 AnimalsCat の Cat クラスのみがロードされ、root() 関数は「ロードされていない」と同等です
したがって、操作はエラーをスローします: root() 関数は宣言されていません
上記は PHP の名前空間です皆さんのためにまとめましたので、今後皆さんのお役に立てれば幸いです。
関連記事:
以上がPHP名前空間について(サンプルコードと合わせてシンプルで分かりやすい)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。