有时在一些库中,例如 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/