0
require_once'modules/logger.php';                                                         
$Logger = new Logger();

require_once 'templates/list.php';
$Templates = new templatesList();

require_once 'widgets/list.php';
$Widgets = new widgetsList();

私はとで使用し$Loggerます。 で使用します。templates/list.phpwidgets/list.php$Templates/widgets/list.php

上記のコードはこのエラーをスローします:

注意:未定義の変数: 99行目Loggerで 致命的なエラー:99 行目で非オブジェクト .../templates/list.phpのメンバー関数を呼び出し ますtoLog().../templates/list.php

UPDこれ が99行目です。

$Logger->toLog( $contentData );
4

2 に答える 2

2

$Loggerオブジェクトメソッド内でfromを使用する場合は、そのメソッド内でグローバルとしてマークする必要があります。そうしないと、新しいローカル$Logger変数を作成することになります。それが問題なのだと思います。例えば:

class templatesList {
    public function __construct() {
        global $Logger;
        //now we can use $logger.
    }
}

ただし、$Loggerを使用する必要のあるすべてのオブジェクトのコンストラクターに$Loggerを渡す方がおそらく良いでしょう。グローバル変数は、一般的に良い習慣とは見なされません。

class templatesList {
    protected $Logger;
    public function __construct(Logger $Logger) {
        //now we can use $logger.

        //store reference we can use later
        $this->Logger = $Logger;
    }

    public function doSomething() {
        $this->Logger->log('something');
    }
}

new templatesList($Logger);
于 2009-08-27T10:42:36.003 に答える
0

/templates/list.phpの先頭のどこかで$Loggerの設定を解除していませんか?

初期化後、使用する前にvar_dumping()$Loggerを試してください。

于 2009-08-27T10:42:08.393 に答える