From the php documentation,we access global classes like
<?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
?>
However,i am a lost when the doc says that
<?php
$a = new \stdClass;
?>
is functionally equivalent to:
<?php
$a = new stdClass;
?>
here http://php.net/manual/en/language.namespaces.faq.php#language.namespaces.faq.shouldicare
Can someone kindly explain what the doc is saying here.
Thanks.
Right above those two code examples in the docs is the important heading:
So the implication here is not that you can write
new stdClass;inside a namespace and have it be equivalent, but rather that if you are not using namespaces at all, then you needn’t worry about the backslashnew \stdClass;When working in a namespace, the rule does apply and you will need to use
new \stdClass;.And this doesn’t just apply to the generic
stdClass, but to any class.