Pregunta

PHP5 tiene un "método mágico" __call()que se puede definir en cualquier clase que se invoque cuando se llama a un método indefinido; es más o menos equivalente al de Ruby method_missing o Perl AUTOLOAD.¿Es posible hacer algo como esto en versiones anteriores de PHP?

¿Fue útil?

Solución

Este artículo, Uso de la sobrecarga de llamadas a métodos en PHP 4 En DevShed podría ayudar.

Otros consejos

Lo más importante que me faltaba era que __call existe en PHP4, pero debe habilitarlo por clase llamando overload(), como se vio en documentos php aquí .Desafortunadamente, las firmas de la función __call() son diferentes entre PHP4 y PHP5, y no parece haber una manera de realizar una implementación que se ejecute en ambos.

Recuerdo haberlo usado y un poco de búsqueda en Google sugiere que

function __call($method_name, $parameters, &$return)
{
  $return_value = "You called ${method_name}!";
}

como función miembro hará el trabajo.

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