php - 在 PHP 命名空间或类元素中 \ 用于什么
问题描述
多年来,我一直在为我们的内部闭源项目维护 PHP 框架。
当我更新它并使用 PHP 7 保持编码标准时,我注意到许多开发人员在代码中调用的类和命名空间中使用 \。
例如
class ClassName extends ParentClass implements
\ArrayAccess,
\Countable,
\Serializable
{
// constants, properties, methods
}
或者例如在类的函数中调用类
public function featured()
{
// Check for request forgeries
\Session::checkToken() or jexit(\Text::_('JINVALID_TOKEN'));
$user = \Factory::getUser();
$ids = $this->input->get('cid', [], 'array');
$values = ['featured' => 1, 'unfeatured' => 0];
$task = $this->getTask();
$value = \ArrayHelper::getValue($values, $task, 0, 'int');
}
为什么使用 \ 以及它的目的是什么,因为它也可以在没有 \ 的情况下工作。
因为我在网上看不到任何信息,所以 \ 在类和命名空间中的用途。
解决方案
这在这里解释:http: //php.net/manual/en/language.namespaces.fallback.php
执行文件时,它有自己的命名空间。从上面的页面看这段代码:
<?php
namespace A\B\C;
class Exception extends \Exception {}
$a = new Exception('hi'); // $a is an object of class A\B\C\Exception
$b = new \Exception('hi'); // $b is an object of class Exception
$c = new ArrayObject; // fatal error, class A\B\C\ArrayObject not found
?>
$a = new Exception('hi');
使用当前命名空间中的 Exception 类,即 A\B\C
$b = new \Exception('hi');
使用全局类Exception
推荐阅读
- python - vbar 字形中的宽度选项不会在散景中自动调整
- java - 生成的 XSD 中的空行
- linux - 将环境变量传递给嵌套的子级
- vba - Word Vba 打印大量文件时出现问题
- ios - largeTitleDisplayMode 不能正常工作?
- logging - Rsyslog - 日志未显示在服务器上
- string - perl 从文件中删除字符串块并保存到文件
- node.js - RS-232c Digi 秤没有发送任何数据
- maven - 目标 org.apache.maven.plugins:maven-dependency-plugin:3.0.0:analyze-only 的执行分析失败:此功能需要 ASM7
- excel - 创建动态 CheckBox 变量