2014-04-01 38 views
0

今天早上我遇到了一个关于PHP命名空间的问题,我的一个朋友问我是否知道什么是错的,但我不确定。我不记得整个代码块,但基本上这一小段是什么让我困惑:PHP命名空间别名奇怪地工作

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

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

因为我不是很熟悉PHP的命名空间,我有2个问题:

  1. 什么是错的代码不打印或者“B”或错误?
  2. $bootstrap = new \Test\Built\Framework\Bootstrap;实际上做了什么?它如何被加载?

回答

2

大概类 '测试\建筑\框架\引导' 没有发现PHP 的display_errors设置为

这就是为什么错误信息

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

它不是在sceen打印。剧本回声A和出现致命错误。

代码

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

从类

<?php namespace Test\Built\Framework; 

class Bootstrap {} 

?> 

创建一个新的对象要使用引导类在你的脚本,你必须明确包括或使用自动加载磁带机。