Si se realiza una llamada a un método definido en una clase, el método mágico __call puede interceptar la llamada, por lo que podía manejar la situación como me parezca: http://www.php.net/manual/en/language.oop5.overloading.php#language.oop5.overloading.methods¿Existe una función como el método mágico __call() para alcance global en php?
¿Hay algún mecanismo previsto en php por lo que me puede hacer lo mismo con funciones en alcance global. El punto se ilustra mejor con código:
<?php
function return_some_array(){
$a = array();
//Do stuff to array
return array();
}
// Now i call the function like so:
$give_me_array = return_some_array();
// But sometimes I want the array to not contain zeroes, nulls etc.
// so I call:
$give_me_array_filtered = return_some_array_filtered();
// But i haven't defined return_some_array_filtered() anywhere.
// Instead I would like to do something like so:
function __magic_call($function_name_passed_automatically){
preg_match('/(.*)_filtered$/', $function_name_passed_automatically, $matches);
$function_name_that_i_defined_earlier_called_return_some_array = $matches[1];
if($matches){
$result = call_user_func($function_name_that_i_defined_earlier_called_return_some_array);
$filtered = array_filter($result);
return $filtered;
}
}
//So now, I could call return_some_other_array_filtered() and it would work provided I had defined return_some_other_array().
//Or even Donkey_filtered() would work, provided I had defined Donkey() somewhere.
?>
¿Este es posible?
Gracias! Creo que lo probaré. –
@ V-A Es, por supuesto, una manera bastante inútil y innecesariamente hackosa de hacer las cosas. Debe definir y llamar a sus funciones de forma normal. – deceze
En otra nota: ¿crees que esto se puede implementar como una extensión? Me imagino que sería bastante simple? –