PHP命名空间别名很奇怪

时间:2014-04-01 13:17:11

标签: php namespaces

我今天早上遇到了关于PHP名称空间的问题,我的一个朋友问我是否知道什么是错的,但我不确定。我不记得整个代码片段,但基本上这个简短的片段让我感到困惑:

try {
   echo "A";
   $bootstrap = new \Test\Built\Framework\Bootstrap;
   echo "B";
} catch (Exception $e) {
    echo $e->getMessage();
    throw $e;
}

当脚本执行时,我可以看到“A”被打印出来,但不是“B”,因为没有发现错误(也没有抛出异常)。

由于我不熟悉PHP命名空间,我只有两个问题:

  1. 代码有什么问题,因为不打印“B”或错误?
  2. $bootstrap = new \Test\Built\Framework\Bootstrap;实际上做了什么?怎么加载?

1 个答案:

答案 0 :(得分:2)

可能是Class' Test \ Built \ Framework \ Bootstrap'找不到,并且php display_errors 设置为关闭

这就是错误消息

的原因
Fatal error: Class 'Test\Built\Framework\Bootstrap' not found in ...

它没有打印出来。脚本回显A并且出口有致命错误。

代码

$bootstrap = new \Test\Built\Framework\Bootstrap;

从类

创建一个新对象
<?php namespace Test\Built\Framework;

class Bootstrap {}

?>

要在脚本中使用Bootstrap类,您必须专门包含它或使用自动加载器。