PHP 5.2.1 のコールバックとしてインスタンス メソッドを使用しようとしています。$thisPHP 5.4 の時点で、クロージャー内で使用できることを認識しています。PHP 5.3 では、名前を変更$thisし$selfてクロージャーに渡すことができます。ただし、PHP 5.2.1 で動作させるにはこれが必要なので、これらの方法はどちらも十分ではありません。2 つのコメント行は、私の最後の試みでした。その結果、Fatal error: Call to a member function hello() on a non-objectPHP 5.2.1 でインスタンス メソッドへのコールバックを取得できますか?
<?php
class Test {
public function __construct() {
$self = &$this;
$cb = function() use ( $self ) {
$self->hello();
};
call_user_func( $cb );
// $cb = create_function( '$self', '$self->hello();' );
// call_user_func( $cb );
}
public function hello() {
echo "Hello, World!\n";
}
}
$t = new Test();