Pergunta

A função mágica __call () no PHP é usada nas classes. Existe alguma função mágica semelhante, mas para funções? Como __autoload () é para funções.

Por exemplo, algo assim

function __call($name, $arguments) {
    echo "Function $name says {$arguments[0]} ";
}
random_func("hello");
Foi útil?

Solução

Não, eu não acho que essa função mágica exista.

Uma solução alternativa para isso seria colocar suas funções em uma classe estática e adicionar um __callStatic Método mágico para essa classe (> Php 5.3, tenho medo):

class Func
 {
   /**  As of PHP 5.3.0  */
   public static function __callStatic($name, $arguments)
     {
    // Note: value of $name is case sensitive.
    echo "Calling static method '$name' "
         . implode(', ', $arguments). "\n";

  }
 }

Func::random_func("hello!");

Para PHP <5.3, você pode fazer a mesma coisa, mas teria que instanciar um objeto e usar o __call método mágico.

$Func = new Func;
$Func->random_func("hello!");

Outras dicas

Não. Chamar uma função que não existe será sempre resultar em um erro fatal.

** Talvez uma extensão de Zend possa interceptar isso com um fcall_begin_handler, mas eu não tenho certeza.

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