0

仲間のスタックオーバーフラワー!

私は奇妙な問題に苦しんでいます。簡単な説明を書きましょう。

ここに私のフォルダ階層があります

  • 名前空間 sys\core とクラス名 core が宣言された \sys\core\core.php
  • \sys\traits\singleton.php で宣言された名前空間 sys\traits と特性名 singleton
  • \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 に答える