У меня есть проект PHP 5.3.4, в котором мне нужно проанализировать файл журнала и отобразить сводку для пользователя.Формат файла журнала (который находится вне моего контроля) выглядит примерно так:
BEGIN GROUP: my group
<TESTCASE ID=1>
*** Test Name: Some Test
</TESTCASE RESULT="PASSED">
END GROUP: my group
BEGIN GROUP: another group
<TESTCASE ID=1>
*** Test Name: Some other Test
</TESTCASE RESULT="PASSED">
BEGIN GROUP: sub group
<TESTCASE ID=2>
*** Test Name: Foo
</TESTCASE RESULT="FAILED">
END GROUP: sub group
<TESTCASE ID=3>
*** Test Name: Bar
</TESTCASE RESULT="PASSED">
END GROUP: another group
Я думаю, что я хотел бы сначала проанализировать файл журнала для набора объектов, подобного этому:
abstract class ResultBase
{
// name of this result element
private $name_ = null;
// line number in the result log corresponding ot this element
private $line_ = null;
// ...
}
// defines a Group element from the logfile
class Group extends ResultBase
{
// array of ResultBase-derived child elements belonging to this group.
private $children_ = null;
// ...
}
// defines a TestCase element from the logfile
class TestCase extends ResultBase
{
// test case id
private $id_ = null;
// "passed" or "failed" result
private $result_ = null;
// ...
}
class LogFile
{
// array of ResultBase-derived elements that constitute the log
private $elements_ = null;
}
А затем распечатайте объекты:
function Print( $log_file )
{
// some recursive print algorithm...
}
Я новичок в PHP, поэтому, если приведенное выше неверное направление, пожалуйста, дайте мне знать.
Я ищу какой-то шаблон, который можно применить, и несколько предложений псевдокода о том, как его реализовать.
function Parse( $log_file_name )
{
$logfile = new LogFile();
// what goes here???
return $logfile;
}
Print(Parse('C:\mylogfile.log'));