Domanda

Ho trasferito in un nuovo hosting erano abbiamo PHP 5.1 invece di 5.2 che ho usato fino ad ora. Non ho ancora capito se si tratta di un problema di versione di PHP o la configurazione.

In questo momento la maggior parte (o tutte) delle classi che hanno funzioni __toString Converti in "Object ID #" (come in PHP4), ma prima che tutti restituiti i valori corretti.

Come posso risolvere questo problema?

È stato utile?

Soluzione

Apparentemente prima PHP 5.2 metodo __toString era solo "magicamente" chiamato in certe circostanze (ad esempio echo() e print()). Quindi, se si sta utilizzando __toString() in maniera "magica" al di fuori delle funzioni di uscita dirette non funzionerà come previsto.

Fonte :

  

Vale la pena notare che prima di PHP   5.2.0 il metodo __toString stato chiamato solo quando è stata direttamente associata   con echo() o print(). Dal momento che PHP   5.2.0, viene chiamato in qualsiasi contesto stringa (per esempio in printf() con %s   modificatore), ma non in altri tipi   contesti (per esempio con modificatore %d).   Dal PHP 5.2.0, oggetti conversione   senza metodo __toString a stringa   causerebbe E_RECOVERABLE_ERROR.

Altri suggerimenti

Alcune aziende ospitanti (come 1and1) corrono sia 4.x PHP e 5.xe default 4.x. Potrebbe essere necessario disporre di un file .htaccess che assicura che si sta utilizzando la versione corretta di PHP.

Inoltre, il metodo magico __toString () è leggermente diversa dalla versione 5.2+ secondo il documentazione :

  

Si noti che prima PHP 5.2.0 il metodo __toString stato chiamato solo quando è stata direttamente associata alle echo () o stampa (). Dal PHP 5.2.0, viene chiamato in qualsiasi contesto stringa (per esempio in printf () con modificatore% s), ma non in altri contesti tipo (per esempio con% d modificatore). Dal PHP 5.2.0, convertendo oggetti senza metodo __toString a stringa causerebbe E_RECOVERABLE_ERROR.

Quindi, si può dipendere da come si sta chiamando l'uscita.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top