-1

エラーをxmlファイルに記録するための単純なクラスを開発しています。

私が期待するのは、子要素メッセージを含む 3 つの子要素エラーを含むルート要素ログです。しかし、出力は Message 1Message 2Message 3 Message 1Message 2Message 3 Message 1Message 2Message 3 すべてがここに 3 回あります。なぜ、どのようにコードを書き直すのか分かりますか?

次のコードでtest.phpを取得しました:

<?php

    require_once '../meenee/system/Logger.class.php';

    $logger = new Logger;
    $logger->logErrMessage("Message 1");
    $logger->logErrMessage("Message 2");
    $logger->logErrMessage("Message 3");
    $logger->showErrLog();

log.xml

<?xml version="1.0" encoding="UTF-8"?>
<log>

</log>

Logger.class.php

class Logger{

public $errFile;
public $errXMLLog;

public function __construct(){

    $this->errFile = dirname(__FILE__)."/../../error/log.xml";

    if(!file_exists($this->errFile)){
        throw new WarningException("File does not exists. ".$this->errFile);
    }

    if(!($this->errXMLLog = simplexml_load_file($this->errFile))){
        throw new WarningException("Can't simple xml load file. ".$this->errFile);
    }

}

    public function logErrMessage($message){        

        $count = $this->errXMLLog->count();
        $this->errXMLLog->addChild('error');
        $this->errXMLLog->error[$count]->addChild('message', $message);

        $this->errXMLLog->asXml($this->errFile);

    }

    public function showErrLog(){
        foreach ($this->errXMLLog->children() as $child){
            echo file_get_contents($this->errFile);
        }
    }

}
4

1 に答える 1

0

手順を確認してくださいshowErrLog:

各子 (3 つの子がある) に対して、ファイルの内容をエコーし​​ます (ファイルの内容全体。ファイルには 3 つのメッセージが含まれます)。

-> ファイルの内容を 3 回エコーします。

注意おそらく、ファイル内の行を区切るために EOL char を追加する必要があります。

于 2013-06-14T14:43:12.117 に答える