ホームページ > バックエンド開発 > PHPチュートリアル > 無限のマトリョーシカ人形、名前空間のネーミングパス

無限のマトリョーシカ人形、名前空間のネーミングパス

autoload
リリース: 2023-04-09 18:46:01
オリジナル
3067 人が閲覧しました

namespace を学習した後は、名前空間の簡単な概要を次に示します。

1. 名前空間を使用する目的

PHPFunction では、 ClassConstant に同じ名前を付けることはできません。これら 3 つの名前が同じであるという問題を解決するために、名前空間が登場しました。したがって、名前空間は クラス、関数、定数 (const) にのみ影響します。

2. ネームスペースの使用形式

a. スペースに名前を付けることができます

 <?php
namespace space1;//namespace关键字+空间名 
代码;
 ?>
ログイン後にコピー

b. 複数の名前も付けることができますスペースには同時に名前を付けることができます。

<?php
namespace space1;//namespace关键字 +空间名 
代码1;
namespace space2;
代码2;
namespace space3;
代码3;
.......//代码1,代码2,代码3,可相同亦可不同
.......
 ?>
ログイン後にコピー

注: PHP ファイル内の場合、最初のスペースの定義は最初の行に配置する必要があります。ただし、すべてに例外があり、名前空間を宣言する前の唯一の正当なコードは、ソース ファイルのエンコーディングを定義するために使用される

declare ステートメントです。空白を含むすべての非 PHP コードは、名前空間宣言の前に現れてはなりません。たとえば、次のコードはエラーを報告します。

<html>
<?php
namespace space1;
namespace space2;
?>
</html>
ログイン後にコピー

3. ネームスペース アクセス

ネームスペース アクセスは次のように分類されます: 非修飾スペース アクセス,制限されたスペースaccess完全修飾スペースアクセス

a. 無制限のスペース アクセス

<?php
namespace space3;
   function f1(){
   echo "space3";
   }
namespace space3\space2;//其中"\"代表space2是space3的子空间,同理space3是space2的父空间。
   function f1(){
     echo "space2";
     }
namespace space3\space2\space1;
   function f1(){
     echo "space1";
     }
   f1();//对上面空间成员进行访问,输出结果为:space1
?>
ログイン後にコピー

b. 制限付きスペース アクセス

<?php
namespace space2\space1;
    function f1(){
     echo "space1";
      }
namespace space2;
function f1(){
     echo "space2";
      }
   f1();//此时输出的是 space2
   space1\f1();//此时输出的是space1
?>
ログイン後にコピー

c.完全修飾スペース アクセス

<?php
namespace space3;
   function f1(){
   echo "space3";
   }
namespace space2;
      function f1(){
     echo "space2";
     }
namespace space1;
     function f1(){
     echo "space1";
     }
   f1();//对上面空间成员进行访问,输出结果为:space1
   \space3\f1();//对space3进行访问,输出结果为:space3
   \space2\f1();//对space2进行访问,输出结果为:space2
?>
ログイン後にコピー

4.スペース メンバーの紹介

a.use スペース名\ スペースname [as alias]: 指定されたスペースを現在のスペースに導入します。 as キーワードを使用して、導入されたスペースにエイリアスを付けることもできます。

b.use スペース名\スペース名\メンバー クラス [as Alias]: 指定したスペースのメンバーを現在のスペースに導入します。スペース メンバーを導入する場合、クラスのみを導入できます。

5. いくつかのマイナーな状況

#ネームスペースが出現すると、スペース要素 (クラス、定数、関数) へのアクセスはそのスペースに制限されます。修飾されていないスペース アクセスが使用される場合、システムには次の解析ロジック (修飾名または完全修飾名) が適用されます。名前はパスに直接たどって正確に見つけてください)

  • #まずは自分のスペースで検索してください

  • 第 2 に、要素が見つからない場合、異なる空間要素は異なる方法で処理されます

  • # システム定数、システム見つかった場合は関数が見つかりません。そうでない場合、システム クラスは自動的にグローバル スペースに移動して検索しません

##
<?php
namespace space3;
   function f1(){
   echo "space3";
   }
//当前所有访问如果使用非限定名称都代表访问当前空间内的元素
f1();//访问space3下f1()函数
//想要访问函数
define(&#39;PI&#39;,3.14);//space3下没有define()函数,全局函数有
//想要访问系统常量
echo PHP_VERSION; //space3下没有define()函数,全局函数有


//想要访问类

//错误方案
//$m=new Mysqli(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;);//系统会提示类不存在

//正确方案
$m= new \Mysqli(&#39;localhost&#39;,&#39;root&#39;,&#39;root&#39;);

?>
ログイン後にコピー

推奨: php チュートリアル

以上が無限のマトリョーシカ人形、名前空間のネーミングパスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート