乐趣区

关于php: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

这个想必在日常的工程化开发中会十分常见。毕竟当初的框架都是应用了命名空间的,不论做什么都离不开各种类依赖的调用,在各种控制器文件的上方都会有大量的 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. 匿名函数传参

// 匿名函数传参

$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

这个就有点意思了吧,办法中要调用内部的变量是须要 global 的,在这里咱们间接通过 use() 也是能够将变量传递过来的。而且这个仅限于在匿名函数中应用。

测试代码:

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

各自媒体平台均可搜寻【硬核项目经理】

退出移动版