考虑以下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领域的新手。任何帮助使功能发挥作用的人都非常感激。
答案 0 :(得分:2)
你的返回案例中的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 - 该页面上的第一条评论有一个有用的功能,可以帮助你完成对象的转储:
将XML Object转换为数组的快速代码段:
<?php
function xml2array ( $xmlObject, $out = array () )
{
foreach ( (array) $xmlObject as $index => $node )
$out[$index] = ( is_object ( $node ) ) ? xml2array ( $node ) : $node;
return $out;
}
?>
玩得开心! ; - )
答案 1 :(得分:1)
对象参数很可能根本不存在。这样做:
$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)
此外,空格键是您的朋友而不是您的敌人,请学习使用它以及其他干净的编码习惯(例如描述性变量名称)。从长远来看,这将使您和其他程序员更好地查看您的代码。