PHP中use关键字的三种用法如何深入探讨?

更新于
2026-09-27 18:09:42
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计543个文字,预计阅读时间需要3分钟。

PHP中use关键字的三种用法如何深入探讨?

本章节为家长介绍use关键字在PHP中的常见用法。有一定的参考价值,有需要的亲友可参考以下内容,希望对家长有所帮助。

1. 用于命名空间别名引用phpuse namespace\ClassName;

本篇文章给大家介绍一下use关键字在PHP中的种常见用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

PHP中use关键字的三种用法如何深入探讨?

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()也是可以将变量传递过去的。而且这个仅限于在匿名函数中使用。

测试代码: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

本文共计543个文字,预计阅读时间需要3分钟。

PHP中use关键字的三种用法如何深入探讨?

本章节为家长介绍use关键字在PHP中的常见用法。有一定的参考价值,有需要的亲友可参考以下内容,希望对家长有所帮助。

1. 用于命名空间别名引用phpuse namespace\ClassName;

本篇文章给大家介绍一下use关键字在PHP中的种常见用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

PHP中use关键字的三种用法如何深入探讨?

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()也是可以将变量传递过去的。而且这个仅限于在匿名函数中使用。

测试代码: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