• ベストアンサー

【php】コールバック関数ってなんですか?

【php】コールバック関数ってなんですか? コールバック関数ってどういうものなのでしょうか? 個人的になイメージでは このライブラリの、このボタンを押した時 hoge()という関数が実行されるように設計しておいたから ボタンを押した時に何か動作が必要な場合は hoge()という名前で関数を定義しておいてね。 みたいな感じでしょうか?

  • PHP
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#111181
noname#111181
回答No.1

仰る通りですが、人が何か動作(アクション)を起こすというより、ある関数から呼び出されるケースも含みます。 たとえばusortという関数がありますが、これはユーザーが定義したコールバック関数によって配列をソートするものです。 使い方は「usort」(http://jp2.php.net/manual/ja/function.usort.php)の使用例を参考にしてください。

yuzuru0024
質問者

お礼

回答ありがとうございます。 なるほど、定義しておいた関数を 引数として扱えるものもあるのですね。 この例で行くと、用意された決められたソート法を選ぶのではなく 自分独自のソート法をオプションとして扱えるわけですね。

関連するQ&A

  • phpコールバック関数について

    php初心者のものですが、コールバック関数(可変関数)についての質問です。 //引数の与えらえられた名前をもつ関数が存在すれば呼び出すための関数 function func_caller($name)(2) { if (function_exists($name)) { (3) $name(); //可変換数をして関数の呼び出し } } function foo() { echo 'foo call', PHP_EOL; } func_caller('foo'); //foo called(1) とあるのですが (1)の関数が(2)に呼ばれて$nameはfooが入ってて (3)が評価されまでわかるのですが次にどうなっていくのかわかりません。 どなたかわかる方いらっしゃいましたらどうか教えていただけないでしょうか? 何卒よろしくお願い致します。

    • ベストアンサー
    • PHP
  • コールバック関数について

    コールバック関数の意味は、 特定の条件が成り立った時に呼び出してもらうだと思うんですが、 コールバック関数を使うメリット・利点は何なんでしょうか?

  • コールバック関数(?)をループしたいのですが………

    下記のようなコールバック関数(?)が10コ続いているとき、 for文か何かでループさせ分かりやすく書きたいのですが、どうすれば良いでしょうか? $('#id1').hoge(params, options, function(){  $('#id2').hoge(params, options, function(){   //処理  }); }); ※jQuery利用してます

  • コールバックって・・・

    コールバックって・・・ はじめまして、質問があります。 コールバックとはどういう意味でしょうか? コールバックは普通の関数呼び出しと何か違いがありますか。 [現在のイメージ] ・下位関数が上位の関数をコールすること ・マルチタスクでないと使用できない ・イベントドリブンでないと使用できない ・割り込み的なもの? ご存知の方いらっしゃいましたら、どうか御教授ください。

  • PHPにおいて

    コールバック関数とはどのようなものをさすのでしょうか? 配列を扱う関数の第二引数によく関数を渡すものがありますよね? array_walkやusortなどですが この引数に渡す、関数がコールバック関数なのでしょうか? だとしても、いまいちピンときません。 引数に関数を渡してなぜそれがコールバック関数とよばれるものになるのでしょうか? コールバック関数の動きとはどのようなものなのでしょうか? (特定の関数が実行されたときに、 引数に渡された、関数が、その特定の関数内で実行されることが コールバックという動作なのでしょうか?) 以下、URLとうにコールバック関数を渡せる一覧がありました。 http://tm.root-n.com/programming:php:etc:callback_function

    • ベストアンサー
    • PHP
  • jQueryのコールバック関数の実行順序について

    いつもお世話になっております。 jQueryのコールバック関数について質問させて下さい。 jQueryの関数には引数としてコールバック関数を取るものがありますが、これらの実行順序で悩んでいます。 実行順序に関して、呼び出し元関数の実行が完了した後にコールバック関数が実行されるという認識で間違いないでしょうか? 以前、実行順序は保証されないという記述を見たのですが、どこで見たのか失念してしまい、再度読み直す事ができないでいます。 以上の事に関してご教授下さい。 宜しくお願い致します。

    • ベストアンサー
    • AJAX
  • cpick.jsでコールバック関数を使いたい

    http://www.html5.jp/library/cpick.html にあるcpick.jsを使用して $(function(){ function hoge(){ alert('hoge'); } }); 上記のようなhoge()を実行させたいのですが、 やり方が分からず困っております。 http://d.hatena.ne.jp/tohokuaiki/20101122/1290427583 ↑こちらも参考にしたのですが、素のfunctionは動作しましたが、 jquery内のfunctionを呼ぶ方法が分かりませんでした。 どなたかご教授ください。

  • コールバック関数 再び

    またまた、お世話になります。前回、御回答頂き動作するようにはなったのですが、コールバックに入力があった時に、アプリケーションが終了してしまう現象がおきています。御教授お願いします。 C++で作られたDLLを利用。 装置との通信を行なう物で初期設定用と通信開始用の 関数があり、コールバック関数で、装置からの送信もある。このDLLを使った、他のアプリで動作確認は取れているのでDLL自体には問題ないと思われる。 関数説明 【初期設定用】  initial(DWORD ip,LPNOTIFICATIONFUNC notificationFunc); ip=相手先のipアドレス notificationFunc=コールバック関数へのポインタ コールバック関数 WINAPI *PNOTIFICATIONFUNC(  DWORD id,  BYTE bySet1,  BYTE bySet2,  BYTE *data,  DWORD datasize); 以上の説明があり、現在下記のように宣言して使っています。 【初期設定用】 Declare Function MT_INITIALIZE Lib "TEST.dll" Alias "Initial" _  (ByVal ip As Integer, ByVal notificationFunc As CallBack) As Boolean Public Delegate Sub CallBack( _  ByVal id As Integer, _ ByVal byset1 As Byte, _ ByVal byset2 As Byte, _ ByVal data As IntPtr, _ ByVal dataSize As Integer) 【コールバック関数】 Public Shared Sub notificationFunc( _  ByVal id As Integer, _ ByVal byset1 As Byte, _ ByVal byset2 As Byte, _ ByVal data As IntPtr, _ ByVal dataSize As Integer )   //データのバッファ処理 End Sub

  • PHPからのライブラリ関数コール

    あちこち検索したのですが、うまくヒットしません。 Linuxにて作成したC言語のダイナミックリンクライブラリ(xxxxx.so)の関数をPHPから実行することは可能でしょうか。実現可能であれば、PHP側ではどのような手順が必要ですか。よろしくお願いします。

    • ベストアンサー
    • PHP
  • コールバック中の変数操作

    表題のままですが、Ajaxコールバックの中から、外部の変数(オグジェクト)を操作するにはどうたら良いですか? // グローバルオブジェクト定義 function MyClass(){ this.myValue = 'foo'; } var myObj = new MyClass(); $.ajax({ url : '/hoge'; // 以降オプション省略 success : function(){ // ここで、myObj.myValue に 'hoge' を代入したいです } }); コールバックの中で、this.myObj.myValue = 'hoge'; とはできないですよね? よろしくお願いします。

    • ベストアンサー
    • AJAX

専門家に質問してみよう