0

StackOverflowers 的同胞!

我遇到了奇怪的问题。让我写一个简短的描述:

这是我的文件夹层次结构

  • \sys\core\core.php 声明命名空间 sys\core 和类名 core
  • \sys\traits\singleton.php 声明命名空间 sys\traits 和特征名称单例
  • \pub\index.php(没有声明的命名空间,包括自动加载功能,它负责休息 - 基于命名空间声明加载文件)

\sys\traits\singleton.php

trait singleton {

    private static $_instance = false;

    public static function get_instance() {

        if( self::$_instance == false ) {

            self::$_instance = new self();
        }

        return self::$_instance;
    }

}

\sys\core\core.php

namespace sys\core;

class core {
    use \sys\traits\singleton;

    public function __construct() {
        $ =; // just an example, it shall produce a nice parse error but it wont :(
    }
}

\pub\index.php我有

error_reporting(E_ALL);

// some constants defined

require('path/to/my/autoload/which/works/correctly.php');

use sys\core\core as core;

$core = core::get_instance();

$core->load_controller();

基本上,任何类型的错误 ( parse error / warning etc) 都会显示,除非是在命名空间内引起的。因此,任何错误\pub\index.php都会被正确报告(根据需要),但是在声明命名空间的文件中发生的每个错误都会导致白页,没有显示任何错误(尽管 error_reporting 被设置为E_ALL可能的任何地方 - 即使在 php.ini 中)

我的配置信息:

PHP 5.5.0(来自 dotdeb.org 的包)通过 PHP-FPM 运行 nginx 1.4.1(来自 dotdeb.org 的包,nginx 的 error.log 也是空的,即使它正常保存任何类型的 PHP 错误)在 Debian 上运行(测试/席德)

任何提示/提示我错过了什么?我会感谢任何信息!提前致谢!

4

1 回答 1

0

问题已解决(无论如何它都没有连接到命名空间)

@ before include() 不会消除包含中的错误,它会消除包含文件中抛出的所有错误(我想知道从什么时候开始是这样的......)

无论如何,问题可以被关闭、利用和遗忘

于 2013-07-08T20:56:12.657 回答