Pregunta

Me he mudado a un nuevo servicio de hosting eran tenemos PHP 5.1 en lugar de 5.2 que he estado usando hasta ahora. Todavía no he descubierto si se trata de un problema de versión de PHP o configuración.

En este momento la mayor parte (o la totalidad) de las clases que tienen funciones __toString Convertir a "# ID del objeto" (como en php4), pero antes de que todos regresaron a los valores correctos.

¿Cómo puedo solucionar este problema?

¿Fue útil?

Solución

Al parecer antes de PHP 5.2 el método __toString fue sólo "mágicamente" llamada en ciertas circunstancias (por ejemplo echo() y print()). Así que si usted está usando actualmente __toString() de una manera "mágica" fuera de las funciones de salida directa no funcionará como se espera.

Fuente :

  

Vale la pena señalar que antes de PHP   5.2.0 el método __toString solamente fue llamado cuando se combinó directamente   con echo() o print(). A partir de PHP   5.2.0, se llama en cualquier contexto de cadena (por ejemplo, en printf() con %s   modificador) pero no en otros tipos   contextos (por ejemplo, con modificador %d).   A partir de PHP 5.2.0, objetos de conversión   sin método __toString de cadena   causaría E_RECOVERABLE_ERROR.

Otros consejos

Algunas empresas de acogida (como 1and1) corren tanto PHP 4.x 5.x y por defecto a 4.x. Puede que tenga que tener un archivo .htaccess que asegura que usted está utilizando la versión correcta de PHP.

Además, el __toString magia () es ligeramente diferente de la versión 5.2 + de acuerdo con la documentación :

  

Vale la pena señalar que antes de PHP 5.2.0 el método __toString solamente se llama cuando se combinó directamente con echo () o print (). Desde PHP 5.2.0, se llama en cualquier contexto de cadena (por ejemplo, en printf () con el modificador% s) pero no en otros contextos tipos (por ejemplo, con% d modificador). A partir de PHP 5.2.0, la conversión de objetos sin método __toString a cadena causaría E_RECOVERABLE_ERROR.

Por lo tanto, puede depender de la forma en la que está llamando la salida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top