当我启动php脚本时,有时可以正常工作,但是很多时候它会检索我这个errror
致命错误:在非对象上致电成员函数儿童() /membri/americanhorizon/ytvideo/rilevametadatadatadatadaurlyoutube.php在线 21
这是代码的第一部分
// set feed URL
$feedURL = 'http://gdata.youtube.com/feeds/api/videos/dZec2Lbr_r8';
// read feed into SimpleXML object
$entry = simplexml_load_file($feedURL);
$video = parseVideoEntry($entry);
function parseVideoEntry($entry) {
$obj= new stdClass;
// get nodes in media: namespace for media information
$media = $entry->children('http://search.yahoo.com/mrss/'); //<----this is the doomed line 21
更新:采用解决方案
for ($i=0 ; $i< count($fileArray); $i++)
{
// set feed URL
$feedURL = 'http://gdata.youtube.com/feeds/api/videos/'.$fileArray[$i];
// read feed into SimpleXML object
$entry = simplexml_load_file($feedURL);
if (is_object($entry))
{
$video = parseVideoEntry($entry);
echo ($video->description."|".$video->length);
echo "<br>";
}
else
{
$i--;
}
}
在此模式下,我强迫脚本重新检查导致错误的文件
您首先调用函数:
$entry = simplexml_load_file($feedURL);
该功能具有返回值。您在该功能的"手动"页面上发现了它:
- http://php.net/simplexml_load_file
然后,您以变量$entry
的形式使用该返回值,而无需验证函数调用成功。
因此,您接下来会遇到错误。但是您的错误/错误是您如何处理函数的返回值。
不正确处理返回值就像呼吁麻烦。阅读有关您使用的功能的信息,请检查返回值并根据成功或错误条件进行操作。
$entry = simplexml_load_file($feedURL);
if (FALSE === $entry)
{
// youtube not available.
}
else
{
// that's what I love!
}
有时?真的吗?看看这个:
<?php
$dummy; //IN FACT, this var is NULL now
// Will throw exactly the same error you get
$dummy->children();
为什么?因为,我们可以从对象类型调用方法。
因此,如果您想避免这样的错误,下次您将调用该方法确保它是"可能的"。
<?php
if ( is_object($dummy) && method_exists($dummy, 'children') ){
//sure it works
$dummy->children();
}