今天早上我遇到了一个关于PHP命名空间的问题,我的一个朋友问我是否知道出了什么问题,但我不确定。我不记得整个代码片段,但基本上这个简短的片段让我感到困惑:
try {
echo "A";
$bootstrap = new 'Test'Built'Framework'Bootstrap;
echo "B";
} catch (Exception $e) {
echo $e->getMessage();
throw $e;
}
当脚本执行时,我可以看到"A"被打印出来,但没有"B",因为没有发现错误(也没有抛出异常)。
由于我对 PHP 命名空间并不熟悉,我只有 2 个问题:
- 代码不打印"B"或错误有什么问题?
$bootstrap = new 'Test'Built'Framework'Bootstrap;
实际上做了什么?它是如何加载的?
可能找不到类'Test''Built''Framework''Bootstrap',并且php display_errors设置为Off。
这就是为什么错误消息
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 类,您必须专门包含它或使用自动加载器。