例えば

  • controllers/sample_controller.php
class SampleController extends AppController {
  var $components = array(Sample);

  function sample() {
    $this->Sample->func(callback);
  }
}
  • controllers/components/sample.php
class SampleComponent extends Object {

  function func($call) {
    call_user_func($call);
  }

}

とあったときに
callback関数をどこに定義するのがいいのかがよく分からない

sample_controllerのclassで定義されているとエラーが発生して
sample.phpのclass外で定義すると動作はするけどなんか美しくないしmodelと連携できない

なんか見落としてる気がするけど今日1日これで時間つぶしてしまった。

追記
解決した。

controllerにfunction callbackを用意しておいてcall_user_funcに$thisを渡せば問題なく動いた

function callback() {
}

function sample() {
  $this->Sample->func(array($this, callback));
}

これでOK

参考リンク

  • http://gist.github.com/434330
  • http://gist.github.com/434331

IRCで回答してくれたかたありがとうございました!