Regarding namespaces:
Be sure to include fully namespaced class path:
<?php
forward_static_call_array(
array('NAMESPACE\CLASS_NAME', 'STATIC_METHOD'),
$params
);
(PHP 5 >= 5.3.0, PHP 7, PHP 8)
forward_static_call_array — Bağımsız değişkenleri dizi olarak iletilen statik yöntemi çağırır
Adı yöntem
bağımsız değişkeninde belirtilen kullanıcı
tanımlı işlevi veya yöntemi çağırır. Bu işlev bir yöntem bağlamından
çağrılmalı ve bir sınıfın dışında kullanılmamalıdır. İşlev Statik İçselleştirim
kullanır. Belirtilen yöntemin tüm bağımsız değişkenleri,
call_user_func_array() işlevine benzer şekilde, sadece
değerleri içeren bir dizi olarak iletilir.
yöntem
Çağrılacak işlev veya yöntemin adı. Bu bağımsız değişken, sınıfın adını ve yöntemini içeren bir dizi veya işlev adına sahip bir dizge olabilir.
bağımsız_değişkenler
Tüm bağımsız değişkenleri içeren bir dizi.
Bilginize:
forward_static_call_array() için bağımsız değişkenler gönderimli aktarılmamalıdır.
Hata durumunda false
, aksi takdirde işlevin dönüş değeri.
Örnek 1 - forward_static_call_array() örneği
<?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('more', 'args'));
forward_static_call_array( 'test', array('other', 'args'));
}
}
B::test('foo');
function test() {
$args = func_get_args();
echo "C ".join(',', $args)." \n";
}
?>
Yukarıdaki örneğin çıktısı:
B B more,args C other,args
Regarding namespaces:
Be sure to include fully namespaced class path:
<?php
forward_static_call_array(
array('NAMESPACE\CLASS_NAME', 'STATIC_METHOD'),
$params
);
one of academic example, when forward_static_call() can be useful
<?php
class 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());