2

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();
4

3 に答える 3