中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP 命名空間 namespace 函數調用 類引用 詳解

發布時間:2020-07-10 22:22:06 來源:網絡 閱讀:1089 作者:津沙港灣 欄目:web開發

PHP namespace 命名空間 函數調用 類引用 詳細測試分析

本文測試中,假設index.php頁面和test.php頁面在同一個根目錄下,方便加載test.php頁面。

前提條件都是在namespace A;下進行測試。

namespace A;
use B\D, C\E as F;

// 函數調用
foo();      // 首先嘗試調用定義在命名空間"A"中的函數foo()
\foo();     // 調用全局空間函數 "foo"
my\foo();   // 調用定義在命名空間"A\my"中函數 "foo"
F();        // 首先嘗試調用定義在命名空間"A"中的函數 "F"
B\foo();    // 調用命名空間 "A\B" 中函數 "foo"
B::foo();   // 調用命名空間 "A" 中定義的類 "B" 的 "foo" 方法
D::foo();   // 使用導入規則,調用命名空間 "B" 中定義的類 "D" 的 "foo" 方法
\B\foo();   // 調用命名空間 "B" 中的函數 "foo"
\B::foo();  // 調用全局空間中的類 "B" 的 "foo" 方法
A\B::foo();   // 調用命名空間 "A\A" 中定義的類 "B" 的 "foo" 方法
\A\B::foo();  // 調用命名空間 "A\B" 中定義的類 "B" 的 "foo" 方法


//類引用
new B();    // 創建命名空間 "A" 中定義的類 "B" 的一個對象
new D();    // 使用導入規則,創建命名空間 "B" 中定義的類 "D" 的一個對象
new F();    // 使用導入規則,創建命名空間 "C" 中定義的類 "E" 的一個對象
new \B();   // 創建定義在全局空間中的類 "B" 的一個對象
new \D();   // 創建定義在全局空間中的類 "D" 的一個對象
new \F();   // 創建定義在全局空間中的類 "F" 的一個對象


函數調用

1當前命名空間A下函數調用 語法 foo();

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
require 'test.php';//加載定義命名空間"A\my"的頁面
function foo(){
    echo '我是命名空間"A"中的函數foo()';
}
// 函數調用
foo();      // 首先嘗試調用定義在命名空間"A"中的函數foo()
            // 再嘗試調用全局函數 "foo"

結果為

我是命名空間"A"中的函數foo()

2當前命名空間A下調用命名空間"A\my"中的函數foo()  語法 my\foo();

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
require 'test.php';//加載定義命名空間"A\my"的頁面
//調用函數
my\foo();   // 調用定義在命名空間"A\my"中函數 "foo"
?>

test.php頁面(定義命名空間"A\my"的頁面)

<?php 
namespace A\my;
 function foo(){
     echo '我是命名空間"A\my"中的函數foo()';
 }
?>

結果為

我是命名空間"A\my"中的函數foo()


3.當前命名空間A下調用命名空間 "A\B"的函數"foo"

語法 

require 'test.php';//加載命名空間 "A\B"的函數"foo"文件

B\foo();           

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
use B\D, C\E as F;
require 'test.php';//加載命名空間 "A\B"的函數"foo"文件
B\foo();    // 調用命名空間 "A\B" 中函數 "foo"
?>

test.php頁面(定義命名空間 "A\B"的函數"foo"的頁面)

<?php 
namespace A\B;
function foo(){
    echo '命名空間 "A\B" 中函數 "foo"';
}
?>

結果為

命名空間 "A\B" 中函數 "foo"


4.當前命名空間A下調用本命名空間 "A" 中定義的類 "B" 的 "foo" 靜態方法

語法 

B::foo();           

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
use B\D, C\E as F;

class B{
   static  public function foo(){
        echo '命名空間 "A" 中定義的類 "B" 的 "foo" 方法';
    }
}

B::foo();   // 調用命名空間 "A" 中定義的類 "B" 的 "foo" 方法
            // 如果未找到類 "A\B" ,則嘗試自動裝載類 "A\B"
?>

結果為

命名空間 "A" 中定義的類 "B" 的 "foo" 方法


5.當前命名空間A下調用本命名空間 "B" 中定義的類 "D" 的 "foo" 靜態方法

語法 

require 'test.php';   //加載文件

use B\D;                //引導類

D::foo();                //進行調用

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
require 'test.php';
use B\D, C\E as F;
D::foo();   // 使用導入規則,調用命名空間 "B" 中定義的類 "D" 的 "foo" 方法
            // 如果類 "B\D" 未找到,則嘗試自動裝載類 "B\D"
?>

test.php頁面(定義命名空間 "B"的類"D"的函數"foo"的頁面)

<?php
namespace B;
class D{
static public function foo(){
echo '命名空間 "B" 中定義的類 "D" 的 "foo" 方法';
}
}
?>

結果為

命名空間 "B" 中定義的類 "D" 的 "foo" 方法


6.當前命名空間A下調用命名空間 "B"的函數"foo"

語法 

require 'test.php';//加載命名空間 "B"的函數"foo"文件

\B\foo();           

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
use B\D, C\E as F;
require 'test.php';//加載命名空間 "B"的函數"foo"文件
\B\foo();    // 調用命名空間 "B" 中函數 "foo"
?>

test.php頁面(定義命名空間 "B"的函數"foo"的頁面)

<?php 
namespace B;
function foo(){
    echo '命名空間 "B" 中函數 "foo"';
}
?>

結果為

命名空間 "B" 中函數 "foo"


7.當前命名空間A下調用全局空間 "B"的函數"foo"靜態方法

語法 

require 'test.php';//加載全局空間 "B"的函數"foo"文件

\B::foo();           

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
use B\D, C\E as F;
require 'test.php';//加載全局空間 "B"的函數"foo"文件
\B::foo();  // 調用全局空間中的類 "B" 的 "foo" 方法
            // 如果類 "B" 未找到,則嘗試自動裝載類 "B"
?>

test.php頁面(定義全局空間 "B"的函數"foo"的頁面)

<?php 
class B{
    static public function foo(){
        echo '全局空間的B類中foo方法';
    }
}
?>

結果為

全局空間的B類中foo方法


8.當前命名空間A下調用命名空間 "A\A"的B類"foo"靜態方法

語法 

require 'test.php';//加載命名空間 "A\A"的B類"foo"靜態方法文件

A\B::foo();           

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
use B\D, C\E as F;
require 'test.php';//加載命名空間 "A\A"的B類"foo"靜態方法文件
A\B::foo();   // 調用命名空間 "A\A" 中定義的類 "B" 的 "foo" 方法
              // 如果類 "A\A\B" 未找到,則嘗試自動裝載類 "A\A\B"
?>

test.php頁面(定義命名空間 "A\A"的B類"foo"靜態方法的頁面)

<?php 
namespace A\A;
class B{
    static public function foo(){
        echo '命名空間A\A中B類foo方法';
    }
}
?>

結果為

命名空間A\A中B類foo方法


9.當前命名空間A下調用命名空間 "A\B"的B類"foo"靜態方法

語法 

require 'test.php';//加載命名空間 "A\B"的B類"foo"靜態方法文件

\A\B::foo();           

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
require 'test.php';//加載命名空間 "A\B"的B類"foo"靜態方法文件
\A\B::foo();  // 調用命名空間 "A\B" 中定義的類 "B" 的 "foo" 方法
              // 如果類 "A\B" 未找到,則嘗試自動裝載類 "A\B"
?>

test.php頁面(定義命名空間 "A\B"的B類"foo"靜態方法的頁面)

<?php 
namespace A\B;
class B{
    static public function foo(){
        echo '命名空間A\B中B類的foo靜態方法';
    }
}
?>

結果為

命名空間A\B中B類的foo靜態方法


類引用

1當前命名空間A下本空間類引用  語法 $b=new B();

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
use B\D, C\E as F;

class B{
    public $name='我是命名空間 "A" 中定義的類 "B" 的一個對象';
}

$b=new B();    // 創建命名空間 "A" 中定義的類 "B" 的一個對象
              // 如果未找到,則嘗試自動裝載類 "A\B"
echo $b->name;

結果為

我是命名空間 "A" 中定義的類 "B" 的一個對象


2當前命名空間A下命名空間 "B" 中定義的類 "D"引用 

語法

use B\D        //導入命名空間B中的D類

$b=new D();

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
use B\D, C\E as F;
require 'test.php';//加載命名空間B中的D類的文件
$d=new D();    // 使用導入規則,創建命名空間 "B" 中定義的類 "D" 的一個對象
            // 如果未找到,則嘗試自動裝載類 "B\D"
echo $d->name;
?>

test.php頁面(定義命名空間B中D類的頁面)

<?php 
namespace B;
 class D{
     public $name='命名空間B中D類';
 }
?>

結果為

命名空間B中D類


3當前命名空間A下命名空間 "C" 中定義的類 "E"引用 

語法

use C\E as F        //導入命名空間C中的E類  F為命名空間 "C" 中定義的類 "E"的別名

$b=new F();

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
use B\D, C\E as F;
require 'test.php';//加載命名空間C中的E類的文件
$f=new F();    // 使用導入規則,創建命名空間 "C" 中定義的類 "E" 的一個對象
            // 如果未找到,則嘗試自動裝載類 "C\E"
echo $f->name;
?>

test.php頁面(定義命名空間C中E類的頁面)

<?php 
namespace C;
 class E{
     public $name='命名空間C中E類';
 }
?>

結果為

命名空間C中E類


4當前命名空間A下全局空間中定義的類 "B","D" "F"引用 

語法 

require 'test.php';//加載全局空間中定義的類 "B","D" "F"文件

$b=new \B();  //    \  表示絕對路徑引用  全局空間中定義的類

$d=new \D();

$f=new \F();

index.php頁面

<?php
namespace A;
header("content-type:text/html;charset=utf-8");
use B\D, C\E as F;
require 'test.php';//加載全局空間中定義的類 "B","D" "F"文件

$b=new \B();   // 創建定義在全局空間中的類 "B" 的一個對象
            // 如果未發現,則嘗試自動裝載類 "B"

$d=new \D();   // 創建定義在全局空間中的類 "D" 的一個對象
            // 如果未發現,則嘗試自動裝載類 "D"
 
$f=new \F();   // 創建定義在全局空間中的類 "F" 的一個對象
            // 如果未發現,則嘗試自動裝載類 "F"
echo $b->name;
echo '<br/>';
echo $d->name;
echo '<br/>';
echo $f->name;
?>

test.php頁面(全局空間中定義的類 "B","D" "F"的頁面)

<?php 
class B{
    public $name='全局空間的類B';
}
class D{
    public $name='全局空間的類D';
}
class F{
    public $name='全局空間的類F';
}
?>

結果為

全局空間的類B
全局空間的類D
全局空間的類F


附錄

<?php
namespace A;
use B\D, C\E as F;
 
// 函數調用
 
foo();      // 首先嘗試調用定義在命名空間"A"中的函數foo()
            // 再嘗試調用全局函數 "foo"
 
\foo();     // 調用全局空間函數 "foo" 
 
my\foo();   // 調用定義在命名空間"A\my"中函數 "foo" 
 
F();        // 首先嘗試調用定義在命名空間"A"中的函數 "F" 
            // 再嘗試調用全局函數 "F"
 
// 類引用
 
new B();    // 創建命名空間 "A" 中定義的類 "B" 的一個對象
            // 如果未找到,則嘗試自動裝載類 "A\B"
 
new D();    // 使用導入規則,創建命名空間 "B" 中定義的類 "D" 的一個對象
            // 如果未找到,則嘗試自動裝載類 "B\D"
 
new F();    // 使用導入規則,創建命名空間 "C" 中定義的類 "E" 的一個對象
            // 如果未找到,則嘗試自動裝載類 "C\E"
 
new \B();   // 創建定義在全局空間中的類 "B" 的一個對象
            // 如果未發現,則嘗試自動裝載類 "B"
 
new \D();   // 創建定義在全局空間中的類 "D" 的一個對象
            // 如果未發現,則嘗試自動裝載類 "D"
 
new \F();   // 創建定義在全局空間中的類 "F" 的一個對象
            // 如果未發現,則嘗試自動裝載類 "F"
 
// 調用另一個命名空間中的靜態方法或命名空間函數
 
B\foo();    // 調用命名空間 "A\B" 中函數 "foo"
 
B::foo();   // 調用命名空間 "A" 中定義的類 "B" 的 "foo" 方法
            // 如果未找到類 "A\B" ,則嘗試自動裝載類 "A\B"
 
D::foo();   // 使用導入規則,調用命名空間 "B" 中定義的類 "D" 的 "foo" 方法
            // 如果類 "B\D" 未找到,則嘗試自動裝載類 "B\D"
 
\B\foo();   // 調用命名空間 "B" 中的函數 "foo" 
 
\B::foo();  // 調用全局空間中的類 "B" 的 "foo" 方法
            // 如果類 "B" 未找到,則嘗試自動裝載類 "B"
 
// 當前命名空間中的靜態方法或函數
 
A\B::foo();   // 調用命名空間 "A\A" 中定義的類 "B" 的 "foo" 方法
              // 如果類 "A\A\B" 未找到,則嘗試自動裝載類 "A\A\B"
 
\A\B::foo();  // 調用命名空間 "A\B" 中定義的類 "B" 的 "foo" 方法
              // 如果類 "A\B" 未找到,則嘗試自動裝載類 "A\B"
?>



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

皮山县| 大洼县| 汽车| 永城市| 锡林浩特市| 乌拉特后旗| 南溪县| 石门县| 花莲市| 桂林市| 祁门县| 自治县| 江油市| 偏关县| 从江县| 赞皇县| 宁陵县| 兴国县| 吉木萨尔县| 江源县| 高碑店市| 西藏| 类乌齐县| 沙雅县| 渭南市| 云南省| 沂水县| 漳州市| 张家口市| 武山县| 汕尾市| 黄山市| 景洪市| 慈利县| 乡宁县| 东方市| 图们市| 包头市| 黎平县| 陇西县| 漳州市|