2011-12-20 9 views
0

エラー処理を実装する:どのように私は次の行に私のPHPコードでこの問題を持っている

if (!is_null($sxml->children('http://a9.com/-/spec/opensearchrss/1.0/'))) 

エラーは次のとおりです。

Fatal error: Call to a member function children() 

私は子が存在しないため、エラーが発生した知っています。

私がしたいのは、エラーがトリガーされていないことを確認することです。私は子供がis_nullとis_objectを使って存在するかどうかをチェックしようとしましたが、エラーはまだトリガされています。

子供が出席するかどうかわからないので、エラーメッセージを非表示にするだけです。

私は理に適っていると思います。

おかげ

+0

$ xmlオブジェクトの入手方法は? – Rufinus

答えて

0

ノードが子を持つかどうかテストするために使用count()

if($sxml->children().count()!=0) 
{ 
    } 
+0

私はあなたが致命的なエラーを捕まえることはできないと思います。 'set_error_handler()'でさえそれらに対しては機能しません。 – ThiefMaster

+0

@ThiefMaster - 投稿を更新しました。 – adatapost

1

私は子が存在しないため、エラーが発生した知っています。

は、です。このエラーは子供がいないという事実とは無関係です。 $sxmlに含まれるオブジェクトにはchildrenというメソッドがないため、呼び出しは常に致命的なエラーになります。

これはプロパティの可能性があります。コードにprint_r($sxml->children);呼び出しを追加してこれをテストします。

のような呼び出しは、まったく意味がありません。特定のタイプのすべての子を取得する関数には、有効なXPathセレクターまたは要素を渡すことになります。しかし、あなたが渡すURLは、たとえその関数が存在していても、ほとんど失敗する可能性があります。 - URLを渡して名前空間で選択できるようです。

+0

答えの最初の部分は正確です。二番目はない。 ['children()'](http://www.php.net/manual/en/simplexmlelement.children.php)は 'SimpleXMLElement'のメソッドで、目的の子の名前空間のURIを渡すことができます。彼がここにいるように。 –

+0

私の答えを編集しました。 – ThiefMaster

0

あなたはエラーが発生した理由についてです。

$sxmlがにSimpleXMLElementではないため、このエラーを取得しています。それが問題のある場所にあるので、$sxmlというコードを表示してください。

SimpleXMLElementに子がない場合、children()は空の配列を返します。致命的なエラーはありません。

関連する問題