Existe uma maneira de emular o método mágico __call() do PHP5 no PHP4?
-
09-06-2019 - |
Pergunta
PHP5 tem um “método mágico” __call()
que pode ser definido em qualquer classe que é invocada quando um método indefinido é chamado - é aproximadamente equivalente ao Ruby method_missing
ou Perl AUTOLOAD
.É possível fazer algo assim em versões mais antigas do PHP?
Solução
Este artigo, Usando sobrecarga de chamada de método no PHP 4 no DevShed pode ajudar.
Outras dicas
A parte mais importante que estava faltando era que __call
existe no PHP4, mas você deve habilitá-lo por classe chamando overload()
, como visto em documentos php aqui .Infelizmente, as assinaturas da função __call() são diferentes entre PHP4 e PHP5, e não parece haver uma maneira de fazer uma implementação que rode em ambos.
Lembro-me de usá-lo, e um pouco de pesquisa no Google sugere que
function __call($method_name, $parameters, &$return)
{
$return_value = "You called ${method_name}!";
}
como uma função de membro fará o trabalho.