関数・クラス解説

call_user_func

version:PHP 4, PHP 5, PHP 7 (公式)

最初の引数で指定したコールバック関数をコールする

公式リファレンス

書式

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

説明

パラメータ callback で指定したユーザー定義のコールバック関数をコールします。

パラメータ

callback
コールする callable。
args
コールバック関数に渡す、ゼロ個以上のパラメータ。
注意: call_user_func() のパラメータは 参照渡しではないことに注意しましょう。
例1 call_user_func() の例と参照
error_reporting(E_ALL); function increment(&$var) {     $var++; } $a = 0; call_user_func('increment', $a); echo $a."\n"; // このようにしてもかまいません call_user_func_array('increment', array(&$a)); echo $a."\n";
上の例の出力は以下となります。
Warning: Parameter 1 to increment() expected to be a reference, value given in …01

返値

コールバック関数の結果を返します。

注意

注意: call_user_func() や call_user_func_array() で登録されたコールバックは、前のコールバックからスローされた例外がキャッチされていない場合はコールされません。

サンプル

例2 call_user_func() の例

function barber($type) {     echo "$type ですね、わかりました。\n"; } call_user_func('barber', "マッシュルームカット"); call_user_func('barber', "髭剃り");

上の例の出力は以下となります。

マッシュルームカット ですね、わかりました。 髭剃り ですね、わかりました。

例3 名前空間を使用した call_user_func()

namespace Foobar; class Foo {     static public function test() {         print "Hello world!\n";     } } call_user_func(__NAMESPACE__ .'\Foo::test'); // PHP 5.3.0 以降 call_user_func(array(__NAMESPACE__ .'\Foo', 'test')); // PHP 5.3.0 以降

上の例の出力は以下となります。

Hello world! Hello world!

例4 call_user_func() でのクラスメソッドの使用

class myclass {     static function say_hello()     {         echo "Hello!\n";     } } $classname = "myclass"; call_user_func(array($classname, 'say_hello')); call_user_func($classname .'::say_hello'); // 5.2.3 以降 $myobject = new myclass(); call_user_func(array($myobject, 'say_hello'));

上の例の出力は以下となります。

Hello! Hello! Hello!

例5 call_user_func() でのラムダ関数の使用

call_user_func(function($arg) { print "[$arg]\n"; }, 'test'); /* PHP 5.3.0 以降 */

上の例の出力は以下となります。

[test]

参考

  • call_user_func_array() - パラメータの配列を指定してコールバック関数をコールする
  • is_callable() - 引数が、関数としてコール可能な構造であるかどうかを調べる
  • ReflectionFunction::invoke() - 関数を起動する
  • ReflectionMethod::invoke() - 実行する
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール