PHP - forward_static_call_array ()
La funzione forward_static_call_array () può chiamare un metodo statico e passare gli argomenti come un array.
Sintassi
mixed forward_static_call_array( callable $function , array $parameters )
La funzione forward_static_call_array () può chiamare una funzione o un metodo definito dall'utente fornito dal parametro della funzione. Deve essere chiamato all'interno di un contesto di metodo e non può essere utilizzato all'esterno della classe. Può utilizzare l'associazione statica tardiva. Tutti gli argomenti del metodo inoltrato vengono passati come valori e come un array simile alla funzione call_user_func_array ().
La funzione forward_static_call_array () può restituire il risultato della funzione o false in caso di errore.
Esempio
<?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'));
?>
Produzione
YES WE FETCHED :
Array
(
[0] => JOHN
[1] => DOE
[2] => Array
(
[0] => PETER
[1] => DORA
)
[3] => Array
(
[0] => ANTHONY
[1] => WILLIAM
)
[4] => KAREL
[5] => ANTON
)