0

タイトルがはっきりしない場合は、お詫び申し上げます。説明させてください...

テンプレートクラスの呼び出し'page'があります。初期化するときに、$modeを設定することでデバッグモードになるように設定できます。

問題は、データベースクラスもあり、「page」がデバッグモードになっているという事実を共有したいのですが、それを行うための最良の方法がわかりません...「page」を「db」に拡張することはできません。 'page'が実際に'db'クラスを呼び出す場所はありません。それは常に他のクラスで起こっています。

繰り返しになりますが、これが不明な場合は申し訳ありません...私は役立つコードの本当にシンプルなバージョンを提供しようとしました...

class page {
    public $mode; // what mode the page is in (debug/normal)

    public function __construct($constructVars) {
        $this->mode = $constructVars["mode"]; //debug
    }

    public function debug($message){
        if ($this->mode == "debug"){
            $fh = fopen("debug.txt", 'a') or die("can't open debug file");
            fwrite($fh, date("Y-m-d H:i:s")." : ".$message."\n");
            fclose($fh);
        }
    }
}

class db extends PDO {
    public function debugOutput() {
        $page = new page();
        if ($page->mode == "debug"){
            $fh = fopen("debug.txt", 'a') or die("can't open debug file");
            fwrite($fh, $message."\n");
            fclose($fh);
        }
    }
 }

繰り返しになりますが、これから出てくる答えだと思うので、dbを含めるようにページを拡張することはできません。

4

2 に答える 2

0

あなたはただ渡すことができ$pageますdb::debugOutput()

class db extends PDO {
    public function debugOutput(page $page) {
        if ($page->mode == "debug"){
            $fh = fopen("debug.txt", 'a') or die("can't open debug file");
            fwrite($fh, $message."\n");
            fclose($fh);
        }
    }
}

$page = new page(array('mode' => 'debug'));
// ...
$db->debugOutput($page);
于 2013-03-22T11:22:03.150 に答える