Invocation

call_user_func($s[,$m……]) calls the function $s and passes the remaining parameters as arguments to the function $s. It returns the return value of the callback, or FALSE on error. call_user_func_array ($s,$arr) is similar to call_user_func() except that the arguments are supplied as an array.

<!DOCTYPE html><html><head></head>
<body><?php

function shout($a,$b){
   echo $a.$b."!<br />";
}

call_user_func('shout','Hello',' World');
call_user_func_array('shout',['Hello',' World']);

?></body></html>

Hello World!
Hello World!
forward_ static_call($s[,$m……]) calls a user-defined method $s, with the following arguments. This function uses late static bindinig and must be called within a method. $s can be a string with a function name, or an array with a class name and a method name. This function returns the result of calling $s, or FALSE on error. forward_static_ call_array ($s,$arr) is similar to forward_static_  call() except that the arguments are supplied as an array.

<!DOCTYPE html><html><head></head>
<body><?php
class P{
   const NAME = 'P';
   public static function test() {
      $args = func_get_args();
      echo static::NAME, " ".join(',', $args)." <br />";
   }
}
class C extends P{
    const NAME = 'C';
    public static function test() {
        echo self::NAME, "<br />";
        forward_static_call(array('P','test'),'AB','CD');
        forward_static_call('test','OP', 'QR');
        forward_static_call_array( 'test',['OP', 'QR']);
    }
}
C::test('foo');
function test() {
   $args = func_get_args();
    echo "test ".join(',', $args)." <br />";
}
?></body></html>

C
C AB,CD 
test OP,QR 
test OP,QR