PHP - forward_static_call_array ()

La fonction forward_static_call_array () peut appeler une méthode statique et passer les arguments sous forme de tableau.

Syntaxe

mixed forward_static_call_array( callable $function , array $parameters )

La fonction forward_static_call_array () peut appeler une fonction définie par l'utilisateur ou une méthode donnée par le paramètre de fonction. Il doit être appelé dans un contexte de méthode et ne peut pas être utilisé en dehors de la classe. Il peut utiliser la liaison statique tardive. Tous les arguments de la méthode transférée sont passés sous forme de valeurs et de tableau similaire à la fonction call_user_func_array ().

La fonction forward_static_call_array () peut renvoyer le résultat de la fonction, ou false en cas d'erreur.

Exemple

<?php
   class TestClass {
      private $obj = NULL;
      public function __construct() {
         $this->obj = new SubClass();    
         $this->obj->SetExtra(array('Karel', 'Anton'));
      }
      public function test() {
         forward_static_call_array([$this->obj, 'callMe'], func_get_args());
      }
   }

   class SubClass {
      private $SetVar = NULL;
      public function callMe() {
         $Array = $this->ArrayStrUp(array_merge(func_get_args(), $this->SetVar));
         echo 'YES WE FETCHED : '.PHP_EOL.print_r($Array, true);
      }
      public function SetExtra($vars){
         $this->SetVar = $vars;
      }

      private function ArrayStrUp($Arr) {
         foreach($Arr as $key => $value) {
            if(is_array($value) === true) {
               $Arr[$key] = $this->ArrayStrUp($value);
            } else {
               $Arr[$key] = strtoupper($value);
            }
         }
         return($Arr);
      }
   }
   $test = new TestClass();
   $test->test('John', 'Doe', array('Peter', 'Dora'), array('Anthony', 'William'));
?>

Production

YES WE FETCHED : 
Array
(
    [0] => JOHN
    [1] => DOE
    [2] => Array
        (
            [0] => PETER
            [1] => DORA
        )

    [3] => Array
        (
            [0] => ANTHONY
            [1] => WILLIAM
        )

    [4] => KAREL
    [5] => ANTON
)