php объект в строку - PullRequest
       13

php объект в строку

0 голосов
/ 16 сентября 2009

Я пытаюсь научить себя php ... так что будьте добры и терпите меня.

Я пытаюсь следовать этому уроку о том, как кэшировать файлы ... страница, которую я хочу кэшировать, - только HTML, поэтому я изменил php, чтобы иметь дело только с данными. Я знаю, что часть кэширования работает, и когда я пытаюсь изменить результаты, я получаю «Catchable fatal error: объект класса Caching не может быть преобразован в строку» в строке 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 здесь .

1 Ответ

1 голос
/ 16 сентября 2009

Код на сайте, на который вы ссылаетесь, работает, загружая страницу с предоставленного вами URL-адреса и анализируя ее для артистов, а затем сохраняя их в файле кэша. Кеш-объект содержит только две переменные; 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);  
  }         

Edit:

Другой вариант - расширить класс Caching в вашем 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 );
...