首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP函数不返回对象

问PHP函数不返回对象
EN

Stack Overflow用户
提问于 2011-11-15 04:08:15
回答 2查看 1.2K关注 0票数 0

考虑下面的PHP函数,它应该从根据语言选择的XML文件加载一个对象:

代码语言:javascript
复制
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领域的新手。我们非常感谢任何帮助我们让这个函数工作的人。

EN

回答 2

Stack Overflow用户

发布于 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 -该页面上的第一条评论有一个有用的函数,可以帮助您完成对象的转储:

将

对象转换为数组的快速代码片段:

代码语言:javascript
复制
<?php
function xml2array ( $xmlObject, $out = array () )
{
        foreach ( (array) $xmlObject as $index => $node )
            $out[$index] = ( is_object ( $node ) ) ? xml2array ( $node ) : $node;

        return $out;
}
?>

玩得开心!;-)

票数 2
EN

Stack Overflow用户

发布于 2011-11-15 04:38:21

对象参数很可能根本不存在。执行以下操作:

代码语言:javascript
复制
$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)

另外,空格键是你的朋友,而不是你的敌人,请学会将它与其他干净的编码习惯一起使用(例如描述性变量名)。从长远来看,这会让你和其他看着你的代码的程序员更快乐。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8127410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档