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 回答
-1

我会使用静态类来存储全局可访问的东西,如下所示:

class SystemState{
    public static $debugMode = false; // what mode the page is in (debug/normal)
}

class page {

    public function __construct($constructVars) {
        if($constructVars["mode"] == 'debug'){
            SystemState::$debugMode = true;
        }
    }

    public function debug($message){
        if (SystemState::$debugMode){
            $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() {
        if (SystemState::$debugMode){
            $fh = fopen("debug.txt", 'a') or die("can't open debug file");
            fwrite($fh, $message."\n");
            fclose($fh);
        }
    }
 }
于 2013-03-22T00:28:39.200 回答