Regarding namespaces:Be sure to include fully namespaced class path:<?phpforward_static_call_array( array('NAMESPACE\CLASS_NAME', 'STATIC_METHOD'), $params);(PHP 5 >= 5.3.0, PHP 7, PHP 8)
forward_static_call_array — Chama um método estático e passa os argumentos como array
Chama uma função ou método definido pelo usuário fornecido pelo parâmetro callback.
Esta função deve ser chamada dentro de um contexto de método, não pode ser
usada fora de uma classe.
Ela usa a ligação estática
tardia.
Todos os argumentos do método encaminhado são passados como valores
e como um array, de forma semelhante a call_user_func_array().
callbackA função ou método a ser chamado. Este parâmetro pode ser um array, com o nome da classe e do método, ou uma string, com um nome de função.
parameterUm parâmetro, reunindo todos os parâmetros do método em um array.
Nota:
Observe que os parâmetros para forward_static_call_array() não são passados por referência.
Retorna o resultado da função ou false em caso de erro.
Exemplo #1 Exemplo de forward_static_call_array()
<?php
class A
{
const NAME = 'A';
public static function test() {
$args = func_get_args();
echo static::NAME, " ".join(',', $args)." \n";
}
}
class B extends A
{
const NAME = 'B';
public static function test() {
echo self::NAME, "\n";
forward_static_call_array(array('A', 'test'), array('mais', 'argumentos'));
forward_static_call_array( 'test', array('outros', 'argumentos'));
}
}
B::test('foo');
function test() {
$args = func_get_args();
echo "C ".join(',', $args)." \n";
}
?>O exemplo acima produzirá:
B B mais,argumentos C outros,argumentos
Regarding namespaces:Be sure to include fully namespaced class path:<?phpforward_static_call_array( array('NAMESPACE\CLASS_NAME', 'STATIC_METHOD'), $params);one of academic example, when forward_static_call() can be useful<?phpclass A{ public static function test() { var_dump('we were here'); return static::class; }}class B extends A{ public static function test() { return self::class; }}class C extends B{ public static function test() { $grandParent = get_parent_class(parent::class); // $grandParent is A return forward_static_call([$grandParent, __FUNCTION__]); // calls A::test() }}// prints // string(12) "we were here"// string(1) "C"var_dump(C::test());