callback関数でクラス内の関数を参照する
すごいづまずいてしまったのでメモ。
クラス内で、コールバック関数を指定した場合、同じ関数名なのに、普通に指定すると、グローバルな関数を見に行ってしまう。
例えば、
class hoge{ ・・・ function _callback($mathes){ ・・・ } function _request(){ preg_replace_callback( 'pattern', '_callback', 'subject' ) ; } } function _callback($matches) { ・・・ }
上のコードだと、クラス内の関数_requestを呼んで、preg_replace_callback関数内で、呼び出されるcallback関数は、クラス外の_callback関数になってしまう。
クラス内の関数を呼びたい時は、preg_replace_call関数の第2引数を以下のようにすると、呼べる
preg_replace_callback('pattern', array($this,"setProp"), 'subject') ;