PHP命名空间或类元素中的\用途是什么

时间:2018-08-04 07:23:21

标签: php class namespaces

我从事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');
}

为什么使用\,目的是什么,因为它也可以在没有\的情况下工作。

由于我看不到任何在线信息,因此在类和名称空间中使用\表示什么。

1 个答案:

答案 0 :(得分:0)

在此进行解释: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');在当前名称空间(即A \ B \ C

)中使用Exception类

$b = new \Exception('hi');使用全局类Exception