PHP - forward_static_call_array()



forward_static_call_array() 函数可以调用静态方法并将参数作为数组传递。

语法

mixed forward_static_call_array( callable $function , array $parameters )

forward_static_call_array() 函数可以调用由函数参数给定的用户定义函数或方法。它必须在方法上下文中调用,并且不能在类外部使用。它可以使用延迟静态绑定。转发方法的所有参数都作为值和数组传递,类似于 call_user_func_array() 函数。

forward_static_call_array() 函数可以返回函数结果,或者在出错时返回 false。

示例

<?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'));
?>

输出

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

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

    [4] => KAREL
    [5] => ANTON
)
php_function_reference.htm
广告