PHP 8.4.1 Released!

forward_static_call_array

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

forward_static_call_arrayBağımsız değişkenleri dizi olarak iletilen statik yöntemi çağırır

Açıklama

forward_static_call_array(callable $yöntem, array $bağımsız_değişkenler): mixed

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.

Bağımsız Değişkenler

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.

Dönen Değerler

Hata durumunda false, aksi takdirde işlevin dönüş değeri.

Örnekler

Ö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

Ayrıca Bakınız

  • forward_static_call() - Statik yöntem çağrısı yapar
  • call_user_func() - İlk bağımsız değişkende belirtilen kullanıcı işlevini çağırır
  • call_user_func_array() - Bağımsız değişkenlerin bir dizi olarak verildiği geriçağırım işlevini çağırır
  • is_callable() - Bir değişkenin değerinin bir işlev olarak çağrılabilirliğini doğrular

add a note

User Contributed Notes 2 notes

up
2
nino dot skopac at gmail dot com
8 years ago
Regarding namespaces:

Be sure to include fully namespaced class path:

<?php
forward_static_call_array
(
array(
'NAMESPACE\CLASS_NAME', 'STATIC_METHOD'),
$params
);
up
0
israfilov93 at gmal dot com
6 years ago
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());
To Top