duanmao1919 2013-01-26 14:46
浏览 60
已采纳

php命名空间,访问全局类

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.

  • 写回答

2条回答 默认 最新

  • dongzhi6146 2013-01-26 14:51
    关注

    Right above those two code examples in the docs is the important heading:

    If I don't use namespaces, should I care about any of this?

    No. Namespaces do not affect any existing code in any way, or any as-yet-to-be-written code that does not contain namespaces. You can write this code if you wish:

    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 backslash new \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.

    // Without namespaces:
    $mysqli = new MySQLi(...);
    
    // With namespaces
    $mysqli = new \MySQLi(...);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 如何将下列的“无限压缩存储器”设计出来
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口