Вопрос
Я пытаюсь сам выучить php...так что, пожалуйста, будь добр и потерпи меня.
Я пытаюсь следовать за тобой этот учебник о том, как кэшировать файлы...страница, которую я хочу кэшировать, содержит только HTML, поэтому я изменил php, чтобы он просто обрабатывал данные.Я знаю, что часть кэширования работает, но когда я пытаюсь изменить результаты, я получаю "Уловимую фатальную ошибку:Не удалось преобразовать объект кэширования класса в строку" в строке str_replace ниже.
Я пробовал использовать __toString метод здесь, и я пробовал использовать сериализовать.Есть ли что-то, чего я не понимаю?
Редактировать:О, и я даже пытался операторы литья.
$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($кэширование);заключается в следующем:
object(Caching)#1 (2) { ["filePath"]=> string(9) "cache.htm" ["apiURI"]=> string(27) "http://www.page-I-want.com/" }
Хорошо, теперь я вижу, что проблема в том, что caching.php не возвращает значение в строку $caching.Кто-нибудь может проверить ссылку ниже и помочь мне понять, почему это не работает?Спасибо!
Я просто разместил всю свою файла caching.php здесь.
Решение
Код на сайте, на который вы ссылаетесь, работает путем загрузки страницы с указанного вами URL и анализа ее для поиска исполнителей, а затем сохранения их в файле кэша.Кэш-объект содержит только две переменные;Путь к файлу и 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-коде, используя класс, который вы могли бы сделать:
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 );