質問
私は自分自身にphpを教えようとしています...親切にしてください、そして私に耐えてください。
このチュートリアルをフォローしようとしていますファイルのキャッシュ方法について...キャッシュしたいページはHTMLのみであるため、データを処理するようにphpを変更しました。キャッシュ部分が機能していることはわかっていますが、結果を変更しようとすると、「キャッチ可能な致命的なエラー:クラスキャッシングのオブジェクトを文字列に変換できませんでした」というメッセージが表示されます。下のstr_replace行に。
__ 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 );
My var_dump($ caching);次のとおりです。
object(Caching)#1 (2) { ["filePath"]=> string(9) "cache.htm" ["apiURI"]=> string(27) "http://www.page-I-want.com/" }
わかりました。問題は、caching.phpが値を$ caching文字列に返さないことにあります。誰でも以下のリンクをチェックして、なぜ機能しないのかを理解するのに役立ちますか?ありがとう!
caching.phpファイル全体をこちらに投稿しました。
解決
リンクするサイトのコードは、指定した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 );