日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

use關鍵字在PHP中的幾種用法

 硬核項目經(jīng)理 2021-05-31

use關鍵字在PHP中的幾種用法

在學習了和使用了這么多年的PHP之后,您知道use這個關鍵字在PHP中都有哪些用法嗎?今天我們就來看一下它的三種常見用法。

1. 用于命名空間的別名引用

// 命名空間
include 'namespace/file1.php';

use FILE1\objectA;
use FILE1\objectA as objectB;

echo FILE1\CONST_A, PHP_EOL; // 2

$oA = new objectA();
$oA->test(); // FILE1\ObjectA

$oB = new objectB();
$oB->test(); // FILE1\ObjectA

這個想必在日常的工程化開發(fā)中會非常常見。畢竟現(xiàn)在的框架都是使用了命名空間的,不管做什么都離不開各種類依賴的調(diào)用,在各種控制器文件的上方都會有大量的use xxx\xxx\xxx;語句。

2. 用于trait特性能力的引入

// trait
trait A{
    function testTrait(){
        echo 'This is Trait A!', PHP_EOL;
    }
}

class B {
    use A;
}

$b = new B();
$b->testTrait();

即使在最近這兩年,依然還是見過完全沒有用過trait的PHP程序員,不要驚訝,這是真實存在的。想想還有那么多項目都還在用TP3也就不奇怪了。trait特性還是非常方便的一種類功能擴展模式,其實我們可以看作是將這個use放在了類中就成為了trait的引用定義了。

3. 匿名函數(shù)傳參

// 匿名函數(shù)傳參

$a = 1;
$b = 2;
// function test($fn) use ($a) // arse error: syntax error, unexpected 'use' (T_USE), expecting '{' 
function test($fn)
{
    global $b;
    echo 'test:', $a, '---', $b, PHP_EOL; // test:---2
    $fn(3);
}

test(function ($c) use ($a) {
    echo $a, '---', $b, '---', $c, PHP_EOL;
});
// 1------3

這個就有點意思了吧,方法中要調(diào)用外部的變量是需要global的,在這里我們直接通過use()也是可以將變量傳遞過去的。而且這個僅限于在匿名函數(shù)中使用。

測試代碼:https://github.com/zhangyue0503/dev-blog/blob/master/php/202001/source/use%E5%85%B3%E9%94%AE%E5%AD%97%E5%9C%A8PHP%E4%B8%AD%E7%9A%84%E5%87%A0%E7%A7%8D%E7%94%A8%E6%B3%95.php

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多