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 — Değiştirgeleri dizi olarak iletilen statik yöntemi çağırır
Adı yöntem
değiştirgesinde 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 değiştirgeleri,
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 değiştirge, sınıfın adını ve yöntemini içeren bir dizi veya işlev adına sahip bir dizge olabilir.
değiştirgeler
Tüm değiştirgeleri içeren bir dizi.
Bilginize:
forward_static_call_array() için değiştirgeler 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());