男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站

使用命名空間:別名/導入

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

允許通過(guò)別名引用或導入外部的完全限定名稱(chēng),是命名空間的一個(gè)重要特征。這有點(diǎn)類(lèi)似于在類(lèi) unix 文件系統中可以創(chuàng )建對其它的文件或目錄的符號連接。

PHP 可以為這些項目導入或設置別名: 常量、函數、類(lèi)、接口、命名空間。

別名是通過(guò)操作符 use 來(lái)實(shí)現的。下面是五種導入方式的例子:

示例 #1 使用 use 操作符導入/使用別名

<?php
namespace foo;
use 
My\Full\Classname as Another;

// 下面的例子與 use My\Full\NSname as NSname 相同
use My\Full\NSname;

// 導入一個(gè)全局類(lèi)
use ArrayObject;

// 導入函數
use function My\Full\functionName;

// 為函數設置別名
use function My\Full\functionName as func;

// 導入常量
use const My\Full\CONSTANT;

$obj = new namespace\Another// 實(shí)例化 foo\Another 對象
$obj = new Another// 實(shí)例化 My\Full\Classname 對象
NSname\subns\func(); // 調用函數 My\Full\NSname\subns\func
$a = new ArrayObject(array(1)); // 實(shí)例化 ArrayObject 對象
// 如果不使用 "use \ArrayObject" ,則實(shí)例化一個(gè) foo\ArrayObject 對象
func(); // 調用函數 My\Full\functionName
echo CONSTANT// 輸出 My\Full\CONSTANT 的值
?>
注意對命名空間中的名稱(chēng)(包含命名空間分隔符的完全限定名稱(chēng)如 Foo\Bar 以及相對的不包含命名空間分隔符的全局名稱(chēng)如 FooBar)來(lái)說(shuō),前導的反斜杠是不必要的也不推薦的,因為導入的名稱(chēng)必須是完全限定的,不會(huì )根據當前的命名空間作相對解析。

為了簡(jiǎn)化操作,PHP 還支持在一行中使用多個(gè) use 語(yǔ)句

示例 #2 通過(guò) use 操作符導入/使用別名,一行中包含多個(gè) use 語(yǔ)句

<?php
use My\Full\Classname as AnotherMy\Full\NSname;

$obj = new Another// 實(shí)例化 My\Full\Classname 對象
NSname\subns\func(); // 調用函數 My\Full\NSname\subns\func
?>

導入操作是在編譯執行的,但動(dòng)態(tài)的類(lèi)名稱(chēng)、函數名稱(chēng)或常量名稱(chēng)則不是。

示例 #3 導入和動(dòng)態(tài)名稱(chēng)

<?php
use My\Full\Classname as AnotherMy\Full\NSname;

$obj = new Another// 實(shí)例化一個(gè) My\Full\Classname 對象
$a 'Another';
$obj = new $a;      // 實(shí)際化一個(gè) Another 對象
?>

另外,導入操作只影響非限定名稱(chēng)和限定名稱(chēng)。完全限定名稱(chēng)由于是確定的,故不受導入的影響。

示例 #4 導入和完全限定名稱(chēng)

<?php
use My\Full\Classname as AnotherMy\Full\NSname;

$obj = new Another// class My\Full\Classname 的實(shí)例對象
$obj = new \Another// class Another 的實(shí)例對象
$obj = new Another\thing// class My\Full\Classname\thing 的實(shí)例對象
$obj = new \Another\thing// class Another\thing 的實(shí)例對象
?>

導入規則的范圍

use 關(guān)鍵詞必須在文件最外層范圍 (全局作用域)或在命名空間聲明內。 由于導入發(fā)生在編譯時(shí),而不是運行時(shí),所以不能放入塊作用域。 以下例子展示了不合規則的 use 關(guān)鍵詞使用示例:

示例 #5 不合規的導入規則

<?php
namespace Languages;

function 
toGreenlandic()
{
    use 
Languages\Danish;

    
// ...
}
?>

注意:

導入規則獨立于每個(gè)文件,意味著(zhù)包含的文件 不會(huì )繼承父文件的導入規則。

use 聲明編組

通過(guò)單個(gè) use 語(yǔ)句,可以將來(lái)自同一個(gè) namespace 的 類(lèi)、函數、常量一起編組導入。

<?php

use some\namespace\ClassA;
use 
some\namespace\ClassB;
use 
some\namespace\ClassC as C;

use function 
some\namespace\fn_a;
use function 
some\namespace\fn_b;
use function 
some\namespace\fn_c;

use const 
some\namespace\ConstA;
use const 
some\namespace\ConstB;
use const 
some\namespace\ConstC;

// 等同于以下編組的 use 聲明
use some\namespace\{ClassAClassBClassC as C};
use function 
some\namespace\{fn_afn_bfn_c};
use const 
some\namespace\{ConstAConstBConstC};
男女疯狂一边摸一边做羞羞视频|啊好深好硬快点用力别停动态图|亚洲一区无码中文字幕|特级无码毛片免费视频播放▽|久久狠狠躁免费观看|国内精品久久久久久网站