PHPverse 2025

ReflectionFunction::invokeArgs

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

ReflectionFunction::invokeArgsİşlev bağımsız değişkenlerini çağırır

Açıklama

public ReflectionFunction::invokeArgs(array $bağımsız_değişkenler): mixed

İşlevi bağımsız değişkenleri dizi içinde aktararak çağırır.

Uyarı

Bu işlev hala belgelendirilmemiştir; sadece bağımsız değişken listesi mevcuttur.

Bağımsız Değişkenler

bağımsız_değişkenler

call_user_func_array() işlevindeki gibi işleve bağımsız değişkenleri dizi olarak aktarılır.

Dönen Değerler

Çağrılan işlevin sonucunu döndürür.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 bağımsız_değişkenler anahtarları artık sessizce yok sayılmıyor ve bağımsız değişken isimleri olarak yorumlanıyor.

Örnekler

Örnek 1 - ReflectionFunction::invokeArgs() örneği

<?php
function title($title, $name)
{
return
sprintf("%s. %s\r\n", $title, $name);
}

$function = new ReflectionFunction('title');

echo
$function->invokeArgs(array('Dr', 'Phil'));
?>

Yukarıdaki örneğin çıktısı:

Dr. Phil

Örnek 2 - Değer döndüren bağımsız değişkenli işlevle ReflectionFunction::invokeArgs() örneği

<?php
function get_false_conditions(array $conditions, array &$false_conditions)
{
foreach (
$conditions as $condition) {
if (!
$condition) {
$false_conditions[] = $condition;
}
}
}

$function_ref = new ReflectionFunction('get_false_conditions');

$conditions = array(true, false, -1, 0, 1);
$false_conditions = array();

$function_ref->invokeArgs(array($conditions, &$false_conditions));

var_dump($false_conditions);
?>

Yukarıdaki örneğin çıktısı:

array(2) {
  [0]=>
  bool(false)
  [1]=>
  int(0)
}

Notlar

Bilginize:

Eğer işlev değer döndürmeyi gerektiren bağımsız değişkenlere sahipse bağımsız değişken dizisinde bunların gönderimli oldukları belirtilmelidir.

Ayrıca Bakınız

add a note

User Contributed Notes 2 notes

up
0
theyourcomputer at gmail dot com
7 years ago
In the case of call_user_func_array(), if you were to pass around an anonymous function and reference $this within the anonymous function, $this will faithfully refer to the class in the context in which the function was defined. Using ReflectionFunction::invokeArgs() does not seem to retain its original context--yeah, even if you bind the anonymous function before invoking. I recommend call_user_func_array() where context is a concern.
up
0
Andrea Giammarchi
17 years ago
I encountered a weird problem with ReflectionFunction, described in ticket 44139 of PHP Bugs.

If for some reason you need to call with invoke, or invokeArgs, a function like array_unshift (that accepts internally the array by reference) you could use this code to avoid the generated warning or fatal error.

<?php
function unshift(){
$ref = new ReflectionFunction('array_unshift');
$arguments = func_get_args();
return
$ref->invokeArgs(array_merge(array(&$this->arr), $arguments));
}
?>

I don't know about performances (you can create an array manually too, starting from array(&$this->something) and adding arguments). However, it seems to work correctly without problems, at least until the send by reference will be usable with one single value ...
To Top

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant