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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top