php - 为什么在 PHP 中使用 "use"关键字来导入核心标识符?

标签 php oop namespaces

有时在一些库中,例如 thephpleague/csv ,我看到了use关键字来导入核心标识符(例如函数、类或常量),但我完全不明白为什么要导入它们。
请参阅以下示例:

use Generator;
use SplFileObject;
use function filter_var;
use function get_class;
use function mb_strlen;
use function rawurlencode;
use function sprintf;
use function str_replace;
use function str_split;
use function strcspn;
use function strlen;
use const FILTER_FLAG_STRIP_HIGH;
use const FILTER_FLAG_STRIP_LOW;
use const FILTER_SANITIZE_STRING;
或更多来自 here .
在这个文件中导入的这些类、函数和常量属于 PHP 核心,所以我们实际上不需要导入它们。
为什么这个和其他库导入这些?

最佳答案

当您在 namespace ,每个裸名称都引用该 namespace 中的一个名称。 IE。:

namespace Foo;

echo bar();
bar这里的真正意思是 Foo\bar .
如果此 namespace 中不存在名称,则有回退到全局名称的规则。如果您不想依赖这些规则,或者您确实在命名空间中定义了这些名称并且您不想不断地写 \bar()明确地,那时您可以明确地use这些全局名称可以明确 bar\bar而不是 Foo\bar .
大多数情况下,PHP 内置名称可能不是必需的,但也许项目作者只是简单地将其确定为避免由于 namespace 解析歧义引起的错误的规则。

关于php - 为什么在 PHP 中使用 "use"关键字来导入核心标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68699132/

相关文章:

php - 使用不同的托管服务器连接 codeigniter 中的多个数据库

java - 如何以最少的代码编辑来更改属性类型?

c++ - 如何创建使用重写函数的非成员函数?

android - 在 Android 上使用 KSOAP。自定义命名空间的问题

c++ - 使用变量来决定类或命名空间的类型

PHP 自动加载子文件夹

php - bootstrap-wysiwyg-master 发布到 php

PHP curl_exec() 返回不完整的数据

php - 在这种情况下是使用接口(interface)还是抽象类更好?

c++ - 模板化类型定义和继承