Вопрос

Я пытаюсь сам выучить 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 );
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top