関数・クラス解説
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]
参考
ワード検索
※入力キーワードが、関数名・説明文・タグに含まれるものを検索関数名アルファベット別
最終更新一覧
●stristr
大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却
●stripslashes
バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く
●stripos
大文字小文字を区別せずに文字列が最初に現れる位置を取得する
●stripcslashes
addcslashes() でクォートされた文字列をアンクォートする
●strip_tags
文字列から HTML と PHP のタグを除去して返却
●strcspn
指定した文字が最初に現れる位置を調べる
●strcoll
ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する
●strcmp
2つの文字列を比較し同じか(あるいは大小)を判定する
●strchr
strstr() のエイリアス
●strcasecmp
2つの文字列を比較(大文字小文字を区別せず同じとみなす)
カテゴリー一覧
PHP の振る舞いの変更
音声フォーマットの操作
認証サービス
コマンドライン関連
圧縮およびアーカイブ
暗号
データベース関連
日付および時刻関連
ファイルシステム
自然言語および文字エンコーディング
画像処理および作成
メール関連
数学
テキスト以外の MIME 型
プロセス制御
その他の基本モジュール
その他のサービス
検索エンジン用の拡張モジュール
サーバー固有のモジュール
セッション関連
テキスト処理
変数・データ型関連
ウェブサービス
Windows 用のモジュール
XML 操作
GUI用の拡張モジュール