Возвращение значения XML в функцию - PullRequest
0 голосов
/ 02 августа 2011

У меня есть функция, которая возвращает

if (file_exists($address)) {

    return simplexml_load_file($address) or die("Error loading XML");
}
else {

    return false;
}

Затем на своих страницах я вызываю свою функцию XML

$page = fetchXML();

echo $page->title;

Но я получаю

Notice: Trying to get property of non-object in [...]

Когда я var_dump($page); получаю bool(true)

Почему он не возвращает мои данные XML?


Примечание:

Если я

return $address

в моей функции, затем используйте

$page = simplexml_load_file(fetchXML()) or die("Error loading XML");

echo $page->title;

это работает.

1 Ответ

1 голос
/ 02 августа 2011

Потому что вы не должны замыкать его так:

$ php -r'function foo(){ return 2 or false; } var_dump(foo());'
bool(true)

return имеет меньше приоритета, чем, так сказать, or (на самом деле, это не оператор, поэтому выполняется целое выражение), но = имеет более высокое значение.

$page = simplexml_load_file(fetchXML()) or die("Error loading XML");

То же, что и

($page = simplexml_load_file(fetchXML())) || die("Error loading XML");

В то время как

return simplexml_load_file($address) or die("Error loading XML");

То же, что и

return (simplexml_load_file($address) or die("Error loading XML"));

См. Также приоритет оператора

...