php use function

在一些代码里面看见有使用use function functionname这样的语句;比如这样:

use function array_key_exists;
use function array_keys;
use function array_map;

在php官方文档也看见这样的介绍 文档

请问下这样有什么优点

阅读 3k
3 个回答

命名空间了解一下

use , 假设在一个php文件中有, 两个Class A,同时我们需要进行使用其中的一个Class如何使用呢?

这个时候就需要引入命名空间的概念, 代码空间隔离, 一个命名空间一个作用域, 例如

namespace Test1;
Class A{}

namespace Test2
Class A{}

# 使用

use Test1\A;
use Test1\B

;

命名空间

你可以把命名空间想象成硬盘的目录在同一个目录下不能有两个相同名字的文件(类、方法、常量),默认情况下,创建的类都是挂载在根路径(全局命名空间)的。而处于 PHP 的预设方法都是处于全局命名空间的,有时候我们觉得那个方法不顺手想要去修改一下,如果是在全局命名空间下重写了这个方法(事实上大多数时候还会出现异常 提示方法被重复定义),那么如果在别的地方需要调用到这个同名的原生方法时,就因为你重写写全局命名空间下的这个方法,导致没法访问到原生方法。
那么这时候就可以创建一个命名空间(创建目录),你就可以在这个命名空间下重写这个方法,然后在平级命名空间(当前目录)下调用这个方法时,默认会调用当前命名空间中的可用方法,如果没有就去全局命名空间找。如果想直接使用全局命名空间下的方法,即在方法名前面加上 \

在任何位置使用全局命名空间下的方法都无需手动引入(use),除非当前命名空间下有同名的方法、类、常量。

clipboard.png
命名空间知道,在github上看见有人这么写,感觉好奇,都是php原生的方法,也不存在命名空间冲突

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题