Domanda
Sto cercando di insegnarmi php ... quindi per favore sii gentile e abbi pazienza.
Sto cercando di seguire questo tutorial su come memorizzare nella cache i file ... la pagina che voglio memorizzare nella cache è solo HTML, quindi ho modificato il php per gestire solo i dati. So che la parte di memorizzazione nella cache funziona, è quando provo a modificare i risultati che ottengo un errore irreversibile irreversibile: l'oggetto della classe di memorizzazione nella cache non può essere convertito in stringa " nella riga str_replace di seguito.
Ho provato a usare Metodo __ toString qui e ho provato a utilizzare serialize . C'è qualcosa che mi manca?
Modifica: Oh, e ho anche provato operatori di casting .
$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); è il seguente:
object(Caching)#1 (2) { ["filePath"]=> string(9) "cache.htm" ["apiURI"]=> string(27) "http://www.page-I-want.com/" }
Ok, ora vedo che il problema è che caching.php non restituisce il valore alla stringa $ caching. Qualcuno può controllare il link qui sotto e aiutarmi a capire perché non funziona? Grazie!
Ho appena pubblicato il mio intero file caching.php qui .
Soluzione
Il codice nel sito che colleghi funziona scaricando la pagina dall'URL che hai fornito e analizzalo per gli artisti, quindi salvali nel file della cache. L'oggetto cache contiene solo due variabili; filePath e apiURI. Se si desidera modificare il modo in cui la pagina viene analizzata e convertita nel file XML memorizzato nella cache, è necessario modificare la funzione stripAndSaveFile.
Ecco un esempio di come modificare Caching.php per fare ciò che volevi:
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);
}
Modifica:
Un'altra opzione è quella di estendere la classe Caching, nel tuo codice php usando la classe che potresti fare:
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 );