web-dev-qa-db-ja.com

PHP致命的なエラー:非オブジェクトでメンバー関数find()を呼び出しますが、私の関数は機能します

コードの71行目でこのエラーが発生しますが、この行の関数は正しく実行され、期待どおりに機能します。

ただし、エラーログが次の行でいっぱいになっていることに気付きました。

[2013年12月9日14:54:02 UTC] PHP致命的なエラー:/home/sportve/public_html/open_event_common.phpの非オブジェクトに対するメンバー関数find()の呼び出し71行目

私がチェックしたもの:

simple_html_dom_parserはすでに含まれており、71行目で実行する予定のこの関数は機能しています。

これが私のコードの71行目です。

$content->find('a.openevent', 0)->innertext = '';

だから、このエラーが私のエラーログファイルに表示されている原因について混乱していますか?

編集:ここに完全なコードがあります:

<?php       
    $url = "static/" . $cat_map[$cat]['url'];
    $html = file_get_html($url);
    $content = $html->find('div#event-pane > div#e' . $event_id, 0);
    $content->find('a.openevent', 0)->innertext = '';
    $content->find('h3.lshtitle', 0)->onclick = '';
    $content->find('h3.lshtitle', 0)->tag = 'div';
    $content->find('div.lshtitle', 0)->class = 'ttl';                
?>
7
user3080061

あなたが提供している最良かつ最も実用的なソリューションの情報に基づいて、$html$contentが空かどうかを確認するだけです。

「非オブジェクトで[関数が何であれ]メンバー関数を呼び出す」を取得すると、10回のうち9回は、基本的にオブジェクトが存在しないことを意味します。変数が空であることを意味します。これがあなたのコードを作り直したものです:

$url = "static/" . $cat_map[$cat]['url'];
if (!empty($url)) {
  $html = file_get_html($url);
  if (!empty($html)) {
    $content = $html->find('div#event-pane > div#e' . $event_id, 0);
    if (!empty($content)) {
      $content->find('a.openevent', 0)->innertext = '';
      $content->find('h3.lshtitle', 0)->onclick = '';
      $content->find('h3.lshtitle', 0)->tag = 'div';
      $content->find('div.lshtitle', 0)->class = 'ttl';
    }
  }
}

また、$urlが空かどうかを確認するチェックも追加しました。

16
JakeGould