PHP.mk документација

call_user_func

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.call-user-func.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.call-user-func.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
call_user_func

Референца за `function.call-user-func.php` со подобрена типографија и навигација.

function.call-user-func.php

call_user_func

(PHP 4, PHP 5, PHP 7, PHP 8)

call_user_funcПовикајте го повикот даден од првиот параметар

= NULL

call_user_func(callable $callback, mixed ...$args): mixed

Ги повикува callback даден од првиот параметар и ги предава останатите параметри како аргументи.

Параметри

callback

На callable што треба да се повика.

args

Нула или повеќе параметри што треба да се предадат на повикот.

Забелешка:

Забележете дека параметрите за call_user_func() не се предаваат со референца.

Пример #1 call_user_func() пример и референци

<?php
error_reporting
(E_ALL);
function
increment(&$var)
{
$var++;
}

$a = 0;
call_user_func('increment', $a);
echo
$a."\n";

// it is possible to use this instead
call_user_func_array('increment', array(&$a));
echo
$a."\n";

// it is also possible to use a variable function
$increment = 'increment';
$increment($a);
echo
$a."\n";
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Warning: Parameter 1 to increment() expected to be a reference, value given in …
0
1
2

Вратени вредности

Враќа вратена вредност од повикот.

Примери

Пример #2 call_user_func() example

<?php
function barber($type)
{
echo
"You wanted a $type haircut, no problem\n";
}
call_user_func('barber', "mushroom");
call_user_func('barber', "shave");
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

You wanted a mushroom haircut, no problem
You wanted a shave haircut, no problem

Пример #3 call_user_func() користење на именскиот простор име

<?php

namespace Foobar;

class
Foo {
static public function
test() {
print
"Hello world!\n";
}
}

call_user_func(__NAMESPACE__ .'\Foo::test');
call_user_func(array(__NAMESPACE__ .'\Foo', 'test'));

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Hello world!
Hello world!

Пример #4 Користење метод на класа со call_user_func()

<?php

class myclass {
static function
say_hello()
{
echo
"Hello!\n";
}
}

$classname = "myclass";

call_user_func(array($classname, 'say_hello'));
call_user_func($classname .'::say_hello');

$myobject = new myclass();

call_user_func(array($myobject, 'say_hello'));

?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

Hello!
Hello!
Hello!

Пример #5 Користење ламбда функција со call_user_func()

<?php
call_user_func
(function($arg) { print "[$arg]\n"; }, 'test');
?>

Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред

[test]

Белешки

Забелешка:

Повиците регистрирани со функции како call_user_func() and call_user_func_array() нема да бидат повикани ако има фатена исклучок фрлен во претходен повик.

Види Исто така

Белешки од корисници 4 белешки

gskluzacek dot nospam at gmail dot com
пред 15 години
if you simply want to dynamically call a method on an object it is not necessary to use call_user_function but instead you can do the following:

<?php

$method_name = "AMethodName";

$obj = new ClassName();

$obj->{$method_name}();

?>

I've used the above so I know it works.

Regards,
-- Greg
Knightnet
пред 18 години
You don't need to use this function to call a variable class function. Instead you can do the following:

$this->{$fnname}();

The example works in PHP 5 from within the class. It is the {} that do the trick.

Regards,
Julian.
Испринтај ги сите преостанати податоци на покажувач на gz-датотека
пред 16 години
A good use for call_user_func(); is for recursive functions.
If you're distributing code, you will often come across users who will rename functions and break the code..
Use this: call_user_func(__FUNCTION__, ... ); inside a function to call itself with whatever parameters you want.

<?php
// example, an extremely simplified factorial calculator..
// it's quite obvious when someone renames the function, it'll spit out an error because it wants to call itself.
function Factorial($i=1) {
  return($i==1?1:$i*Factorial($i-1));
}

// you can give this function whatever name you want, it'll always work, of course if you initially call it using the name you gave it.
function qwertyuiop($i=1) {
  return($i==1?1:$i*call_user_func(__FUNCTION__,$i-1));
}
?>

Just that I didn't see any reference to recursive functions when user_call_func(); really helps.
James na enfsolar dot com
пред 6 години
<?php

class MyClass{

    public function hello($str)

    {

        echo 'hello ' . $str;

    }

}

$obj = new MyClass();

[$obj, 'hello']('World'); // the array can be called as a function
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.