考虑下面的PHP函数,它应该从根据语言选择的XML文件加载一个对象:
function item1($Langu){
if($Langu=='bg'){
$urlD = "someurl/rss1.php";
$xmlD = simplexml_load_file(cacheFetch($urlD,'cachedfeedDBG.xml',3600));
$itemD = '';
if($xmlD === FALSE)
{$itemD = '';}
else
{$itemD = $xmlD->channel->item;}
}
else{
$urlD = "someurl/rss2.php";
$xmlD = simplexml_load_file(cacheFetch($urlD,'cachedfeedDEN.xml',3600));
$itemD = '';
if($xmlD === FALSE)
{$itemD = '';}
else
{$itemD = $xmlD->channel->item;}
}
return $itemD;
}当我回显函数结果时,什么也没有显示。也许我应该在类中包装这个函数?请不要责备我,因为我是OOP PHP领域的新手。我们非常感谢任何帮助我们让这个函数工作的人。
发布于 2011-11-15 04:22:09
1: 2的返回用例返回一个空字符串,因此回显返回将正确地不产生任何结果。
2:如果您试图输出对象的内容,则必须使用print_r()或var_dump()
3:简单的XML有点奇怪,因为var_dump或print_r不会显示对象的所有属性( http://us3.php.net/manual/en/simplexmlelement.attributes.php - "SimpleXML制定了向大多数方法添加迭代属性的规则。不能使用var_dump()或任何其他可以检查对象的方法来查看它们。“)-所以你可以通过查看可用的内容来受益- http://www.php.net/manual/en/ref.simplexml.php -该页面上的第一条评论有一个有用的函数,可以帮助您完成对象的转储:
将
对象转换为数组的快速代码片段:
<?php
function xml2array ( $xmlObject, $out = array () )
{
foreach ( (array) $xmlObject as $index => $node )
$out[$index] = ( is_object ( $node ) ) ? xml2array ( $node ) : $node;
return $out;
}
?>玩得开心!;-)
发布于 2011-11-15 04:38:21
对象参数很可能根本不存在。执行以下操作:
$result = item1($Langu);
echo "<pre>" . print_r($result, true) . "</pre>";
function item1($Langu) {
if ($Langu == 'bg') {
$urlD = "someurl/rss1.php";
$xmlD = simplexml_load_file(cacheFetch($urlD, 'cachedfeedDBG.xml', 3600));
}
else {
$urlD = "someurl/rss2.php";
$xmlD = simplexml_load_file(cacheFetch($urlD, 'cachedfeedDEN.xml', 3600));
}
return $xmlD;
}这将向您显示该对象的大多数属性。不幸的是,SimpleXML会返回一个资源,所以也会有很多隐藏的信息。不过,这应该会帮助您入门。有一种方法可以获得并输出所有隐藏的信息。查看PHP.net上该函数下面的注释。(http://us3.php.net/manual/en/function.simplexml-load-file.php)
另外,空格键是你的朋友,而不是你的敌人,请学会将它与其他干净的编码习惯一起使用(例如描述性变量名)。从长远来看,这会让你和其他看着你的代码的程序员更快乐。
https://stackoverflow.com/questions/8127410
复制相似问题