久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

PHP別名/導(dǎo)入

2023-12-07 279

一、簡(jiǎn)介

PHP允許通過(guò)別名引用或?qū)胪獠康耐耆薅Q,這有點(diǎn)類似于在類 unix 文件系統(tǒng)中可以創(chuàng)建對(duì)其它的文件或目錄的符號(hào)連接??梢詭椭覀儽苊庠诖a中使用冗長(zhǎng)的全名,從而提高代碼的可讀性和可維護(hù)性。別名是通過(guò)操作符 use 來(lái)實(shí)現(xiàn)的,本教程將介紹五種導(dǎo)入方式的例子。

PHP 可以為這些項(xiàng)目導(dǎo)入或設(shè)置別名:

  • 常量
  • 函數(shù)
  • 接口
  • trait
  • 枚舉
  • 命名空間

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

二、use操作符

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

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

//?導(dǎo)入一個(gè)全局類
use?ArrayObject;

//?導(dǎo)入函數(shù)
use?function?My\Full\functionName;

//?為函數(shù)設(shè)置別名
use?function?My\Full\functionName?as?func;

//?導(dǎo)入常量
use?const?My\Full\CONSTANT;

$obj?=?new?namespace\Another;?//?實(shí)例化?foo\Another?對(duì)象
$obj?=?new?Another;?//?實(shí)例化?My\Full\Classname 對(duì)象
NSname\subns\func();?//?調(diào)用函數(shù)?My\Full\NSname\subns\func
$a?=?new?ArrayObject(array(1));?//?實(shí)例化?ArrayObject?對(duì)象
//?如果不使用?"use?\ArrayObject"?,則實(shí)例化一個(gè)?foo\ArrayObject?對(duì)象
func();?//?調(diào)用函數(shù)?My\Full\functionName
echo?CONSTANT;?//?輸出?My\Full\CONSTANT?的值
?>

注意對(duì)命名空間中的名稱(包含命名空間分隔符的完全限定名稱如 Foo\Bar 以及相對(duì)的不包含命名空間分隔符的全局名稱如 FooBar)來(lái)說(shuō),前導(dǎo)的反斜杠是不必要的也不推薦的,因?yàn)閷?dǎo)入的名稱必須是完全限定的,不會(huì)根據(jù)當(dāng)前的命名空間作相對(duì)解析。

為了簡(jiǎn)化操作,PHP 還支持在一行中使用多個(gè) use 語(yǔ)句。通過(guò) use 操作符導(dǎo)入/使用別名,一行中包含多個(gè) use 語(yǔ)句:

<?php
use?My\Full\Classname?as?Another,?My\Full\NSname;

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

導(dǎo)入操作是在編譯執(zhí)行的,但動(dòng)態(tài)的類名稱、函數(shù)名稱或常量名稱則不是。

三、導(dǎo)入和動(dòng)態(tài)名稱

<?php
use?My\Full\Classname?as?Another,?My\Full\NSname;

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

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

四、導(dǎo)入和完全限定名稱

<?php
use?My\Full\Classname?as?Another,?My\Full\NSname;

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

五、導(dǎo)入規(guī)則的范圍

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

1、不合規(guī)的導(dǎo)入規(guī)則

<?php
namespace?Languages;

function?toGreenlandic()
{
????use?Languages\Danish;

????//?...
}
?>

注意:導(dǎo)入規(guī)則獨(dú)立于每個(gè)文件,意味著包含的文件 不會(huì)繼承父文件的導(dǎo)入規(guī)則。

2、use聲明編組

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

<?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\{ClassA,?ClassB,?ClassC?as?C};
use?function?some\namespace\{fn_a,?fn_b,?fn_c};
use?const?some\namespace\{ConstA,?ConstB,?ConstC};
  • 廣告合作

  • QQ群號(hào):4114653

溫馨提示:
1、本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享網(wǎng)絡(luò)內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。郵箱:2942802716#qq.com(#改為@)。 2、本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)裁,轉(zhuǎn)載請(qǐng)注明出處“站長(zhǎng)百科”和原文地址。