Funções mágicas __call () para funções?
-
27-09-2019 - |
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");
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