我是PHP的新手,我遇到了一个我似乎无法修复或找到解决方案的问题。
我正在尝试创建一个辅助函数,它将返回一个充满从XML文件中提取的信息的“对象”。这个名为functions.php的辅助函数包含一个getter方法,该方法返回一个填充了SVN log.xml文件中数据的“class”对象。
每当我尝试使用include 'functions.php';
导入此文件时,该行运行后没有任何代码,调用函数的页面为空。
我做错了什么?
这是functions.php辅助方法和类声明的样子:
<?php
$list_xml=simplexml_load_file("svn_list.xml");
$log_xml=simplexml_load_file("svn_log.xml");
class Entry{
var $revision;
var $date;
}
function getEntry($date){
$ret = new Entry;
foreach ($log_xml->logentry as $logentry){
if ($logentry->date == $date){
$ret->date = $logentry->date;
$ret->author = $logentry->author;
}
}
return $ret;
}
答案 0 :(得分:2)
我不确定从班级中获得单独帮助函数的意义是什么,我个人将这两者结合起来。像这样的东西
其他-file.php 强>
require './Entry.php';
$oLogEntry = Entry::create($date, 'svn_log.xml');
echo $oLogEntry->date;
echo $oLogEntry->revision;
<强> Entry.php 强>
class Entry
{
public $revision;
public $date;
public $author;
public static function create($date, $file) {
$ret = new Entry;
$xml = simplexml_load_file($file);
foreach($xml->logentry as $logentry) {
if($logentry->date == $date) {
$ret->date = $logentry->date;
$ret->author = $logentry->author;
$ret->revision = $logentry->revision;
}
}
return $ret;
}
}
修改强>
鉴于OP是PHP新手,我会完全修改我的建议。在这里完全放弃课程怎么样?几乎没有理由使用我能看到的课程;让我们来看一下使用数组。
我仍然可以将simplexml_load_file
移动到辅助函数中。需要看到其他操作值得保持它。
<强>入门helper.php 强>
function getEntry($date, $file) {
$log_xml = simplexml_load_file($file);
$entry = array();
foreach($log_xml->logentry as $logentry) {
if($logentry->date == $date) {
$entry['date'] = $logentry->date;
$entry['author'] = $logentry->author;
$entry['revision'] = $logentry->revision;
}
}
return $entry;
}
其他-file.php 强>
require './entry.php';
$aLogEntry = Entry::create($date, 'svn_log.xml');
echo $aLogEntry['date'];
echo $aLogEntry['revision'];
修改强>
最后一个想法..因为你似乎在日志中搜索兴趣点,然后复制掉那个节点的部分,为什么不只是搜索匹配并返回该节点?这就是我的意思(返回false
表示该日期没有日志)
function getEntry($date, $file) {
$log_xml = simplexml_load_file($file);
foreach($log_xml->logentry as $logentry) {
if($logentry->date == $date) {
return $logentry;
return false;
}
此外,如果您在同一天有多个日志条目,会发生什么?这只会返回给定日期的单个条目。
我建议使用XPATH。在那里,您可以在此日志XML中抛出一个简洁的XPATH表达式,并返回给定日期内所有条目的对象数组。你正在做的是一个很好的起点,但是一旦掌握了基础知识,我就会转向XPATH以获得一个干净的最终解决方案。