PHP函数没有返回对象

时间:2011-11-14 20:08:15

标签: php function object return

考虑以下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领域的新手。任何帮助使功能发挥作用的人都非常感激。

2 个答案:

答案 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)

此外,空格键是您的朋友而不是您的敌人,请学习使用它以及其他干净的编码习惯(例如描述性变量名称)。从长远来看,这将使您和其他程序员更好地查看您的代码。