use关键字在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

(0)

相关推荐

  • 标梵学习PHP的压缩工具扩展包

    PHP的zip压缩工具扩展包学习 总算到了 PHP 的拿手好戏上场了,前面我们学习过 Bzip2 . LZF . Phar 和 rar 这些压缩相关扩展在 PHP 中的使用,不过它们要么是太冷门,要么 ...

  • final关键字在PHP中的使用

    final关键字的使用非常简单,在PHP中的最主要作用是定义不可重写的方法.什么叫不可重写的方法呢?就是子类继承后也不能重新再定义这个同名的方法. class A { final function t ...

  • 在PHP中灵活使用foreach+list处理多维数组

    先抛出问题,有时候我们接收到的参数是多维数组,我们需要将他们转成普通的数组,比如: $arr = [ [1, 2, [3, 4]], [5, 6, [7, 8]],]; 我们需要的结果是元素1变成1, ...

  • PHP中命名空间是怎样的存在(一)?

    命名空间其实早在PHP5.3就已经出现了.不过大部分同学可能在各种框架的使用中才会接触到命名空间的内容,当然,现代化的开发也都离不开这些能够快速产出的框架.这次我们不从框架的角度,仅从简单的代码角度来 ...

  • 注意!PHP中字符串与数字的比较

    在日常开发过程中,运算符是我们每天都会接触到的.这个运算符中其实埋了非常多的坑,今天我们就来看下字符串和数字用比较需要注意的问题. 首先来看看这些代码: echo '"1234" ...

  • 彻底搞明白PHP中的include和require

    在PHP中,有两种包含外部文件的方式,分别是include和require.他们之间有什么不同呢? 如果文件不存在或发生了错误,require产生E_COMPILE_ERROR级别的错误,程序停止运行 ...

  • [PHP小课堂]use关键字在PHP中的几种用法

    [PHP小课堂]use关键字在PHP中的几种用法 关注公众号:[硬核项目经理]获取最新文章 添加微信/QQ好友:[xiaoyuezigonggong/149844827]免费得PHP.项目管理学习资料 ...

  • MACD在实践中的几种用法

    滑异同移动平均线MACD是Geral Appel于1979年提出的.它是一种利用短期移动平均线与长期移动平均线之间的聚合与分离状况,对买进.卖出时机作出研判的技术指标. MACD主要用于对大势中长期的 ...

  • 行书中的三种连带形式和《怀仁集王圣教序》连带点画九种

    一.行书中的三种连带形式浅介: 1.牵丝 "牵丝"是在一笔的结束处与另一笔的开头间本无笔画,而书写时顺势连上了的细线.在行书中,经常用牵丝来联结分散的笔画,使不太联贯的笔画联贯起来,使字的结 ...

  • 民国大医张锡纯的这个方子超厉害!清理掉你脏腑中的7种垃圾!

    有个东西很好,但味道有点怪,很多人用不习惯.但我们选品同事一直在跟进,做到第二版了.上次福袋收到,长腿老板喝了以后惊呼比以前好喝多了

  • 2021高考化学要点盘点!那些渗透到选择题中的八种典型元素化合物

    高中化学了,尤其是化学元素那,简直是太难学了.元素化合物的性质应用在高考试卷中,贯穿始终,无论是化学基本概念.化学基本理论.化学计算.化学实验等各个方面,其题型灵活.作用之大.运用之广! 而且同学们查 ...

  • 本草纲目中的五种养生粥

    李时珍在<本草纲目>中收入有食疗效果的粥,就有55种,其他各种古籍中记载的药粥方剂,就有1000个左右.陆放翁有<食粥诗>写道:"世人个个学长年,不知长年在目前,我得 ...

  • 诗词中的17种雅事,你最爱哪一件?

    诗词中的17种雅事,你最爱哪一件?

  • 【HAM说】无线电中的几种“噪声”

    前言 前面我们聊了关于滤波器的介绍,其实无线电的发展史本身就是一部信号与噪声的博弈史.如何在一片嘈杂的信号中选取自己有用的信号,是各大厂商努力的方向.而这种选择性的差别也正是高等电台与入门电台最显著的 ...