Magic functions __call() for functions?

The magic function __call() in php are used in classes. Are there any similar magic function but for functions instead? Like __autoload() is for functions.

For example something like this

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

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

Nope, I don’t think such a magic function exists.

One workaround for this would be to put your functions into a static class, and add a __callStatic magic method to that class (> PHP 5.3 only, I’m afraid):

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!");

For PHP < 5.3, you could do the same thing, but you would have to instantiate an object and use the __call magic method.

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

Solution 2

No. Calling a function that doesn’t exist will always result in a FATAL error.

** Maybe a zend extension can intercept this with a fcall_begin_handler, but I’m not sure.

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply