【问题标题】:PHP namespace aliasing works strangelyPHP 命名空间别名的工作方式很奇怪
【发布时间】:2014-04-01 13:17:10
【问题描述】:

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

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; 实际上是做什么的?它是如何加载的?

【问题讨论】:

    标签: php namespaces


    【解决方案1】:

    可能找不到类“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 类,您必须专门包含它或使用自动加载器。

    【讨论】:

      猜你喜欢
      • 2017-05-10
      • 1970-01-01
      • 2012-08-26
      • 2011-05-26
      • 1970-01-01
      • 2013-11-22
      • 2021-08-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多