エラーを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);
}
}
}