0

私は自分自身にphpを教えようとしています...だから親切にして私に耐えてください。

ファイルをキャッシュする方法についてこのチュートリアルに従おうとしています...キャッシュするページはHTMLのみであるため、データのみを処理するようにphpを変更しました。キャッシュ部分が機能していることはわかっています。結果を変更しようとすると、下のstr_replace行に「キャッチ可能な致命的なエラー:クラスCachingのオブジェクトを文字列に変換できませんでした」というメッセージが表示されます。

ここで__toStringメソッドを使用してみましたが、 serializeを使用してみました。足りないものはありますか?

編集:ああ、私は演算子をキャストしようとさえしました。

 $caching = new Caching( "my.htm", "http://www.page-I-want.com/" );
 $info = new TestClass($caching);
 $info = str_replace( "<img src='/images/up.jpg'>","<div class='up'></div>", $info );

私のvar_dump($ cacheing); 以下のとおりであります:

object(Caching)#1 (2) { ["filePath"]=>  string(9) "cache.htm" ["apiURI"]=>  string(27) "http://www.page-I-want.com/" } 

さて、問題は、cashing.phpが値を$caching文字列に返さないことにあることがわかりました。誰かが以下のリンクをチェックして、なぜそれが機能しないのかを理解するのを手伝ってもらえますか?ありがとう!

ここに、caching.phpファイル全体を投稿しました。

4

1 に答える 1

1

リンクするサイトのコードは、指定したURLからページをダウンロードしてアーティスト用に解析し、キャッシュファイルに保存することで機能します。cache-objectには2つの変数しか含まれていません。filePathとapiURI。ページの解析方法とキャッシュされたXMLファイルへの変換方法を変更する場合は、stripAndSaveFile関数を変更する必要があります。

Caching.phpを変更して、必要な処理を実行する方法の例を次に示します。

  function stripAndSaveFile($html) {
        //mange the html code in any way you want
        $modified_html = str_replace( "<img src='/images/up.jpg'>","<div class='up'></div>", $html );
        //save the xml in the cache
        file_put_contents($this->filePath, $modified_html);  
  }         

編集:

他のオプションは、あなたができるクラスを使用してあなたのphpコードでCachingクラスを拡張することです:

  class SpecialCaching extends Caching {
        var $html = "";
        function stripAndSaveFile($html) {
              //mange the html code in any way you want
              $this->html = $html;
        }
  }

  $caching = new SpecialCaching( "my.htm", "http://www.page-I-want.com/" );
  $info = $caching->html;
  $info = str_replace( "<img src='/images/up.jpg'>","<div class='up'></div>", $info );
于 2009-09-16T17:02:31.433 に答える