Функция PHP не возвращает объект - PullRequest
0 голосов
/ 15 ноября 2011

Рассмотрим следующую функцию 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;
}

Когда я повторяю результат функции, ничего не отображается. Может быть, я должен обернуть функцию в классе? Пожалуйста, не ругайте меня, так как я новичок в области ООП PHP. Любая помощь, заставляющая функцию работать с благодарностью.

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

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 () или чего-то еще, что может исследовать объекты. ") Вы в выполнении дампа объекта:

Быстрый фрагмент, который преобразует объект XML в массив:

<?php
function xml2array ( $xmlObject, $out = array () )
{
        foreach ( (array) $xmlObject as $index => $node )
            $out[$index] = ( is_object ( $node ) ) ? xml2array ( $node ) : $node;

        return $out;
}
?>

Веселись! ; -)

1 голос
/ 15 ноября 2011

Вполне возможно, что параметр объекта просто не существует.Сделайте это:

<code>$result = item1($Langu);
echo "<pre>" . print_r($result, true) . "
"; функция 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)

Также пробел - ваш друг, а не враг, пожалуйста, научитесь использовать его вместе сдругие чистые привычки кодирования (например, описательные имена переменных). Это сделает вас и других программистов, которые смотрят на ваш код, намного счастливее в долгосрочной перспективе.

...