【解決済み】componentのclass上のcall_user_funcで呼び出される関数の定義場所が分からない
例えば
- 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
参考リンク
IRCで回答してくれたかたありがとうございました!