PHP 8.1.0 RC 2 available for testing

forward_static_call_array

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

forward_static_call_arrayDeğiştirgeleri dizi olarak iletilen statik yöntemi çağırır

Açıklama

forward_static_call_array(callable $yöntem, array $değiştirgeler): mixed

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.

Değiştirgeler

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.

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 
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

add a note add a note

User Contributed Notes 2 notes

up
3
nino dot skopac at gmail dot com
5 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
3 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