Ben çok nadir özel durumlarda sınıfları dışından özel yöntemleri ve değişkenlere erişmek istiyorum.
Ben introspection kullanılmasına rağmen bu mümkün olmadığını gördüm.
Belirli bir vaka sonraki biridir:
Ben böyle bir şey istiyorum:
class Console
{
    final public static function run() {
        while (TRUE != FALSE) {
            echo "\n> ";
            $command = trim(fgets(STDIN));
            switch ($command) {
                case 'exit':
                case 'q':
                case 'quit':
                    echo "OK+\n";
                    return;
                default:
                    ob_start();
                    eval($command);
                    $out = ob_get_contents();
                    ob_end_clean();
                    print("Command: $command");
                    print("Output:\n$out");         
                    break;
            }
        }
    }
}
Bu yöntem, bu gibi kod enjekte edilmesi mümkün olmalıdır:
Class Demo
{
    private $a;
    final public function myMethod()
    {
        // some code
        Console::run();
        // some other code
    }
    final public function myPublicMethod()
    {
        return "I can run through eval()";
    }
    private function myPrivateMethod()
    {
        return "I cannot run through eval()";
    }
}
(Bu sadece bir sadeleştirme olduğunu. Gerçek bir bir soket geçer, ve daha bir sürü şey uygulamak ...)
Yani ...
Eğer sınıf Demo örneğini ve () $ demo-> myMethod ararsanız, bir konsol alırsınız: bu konsol gibi bir komut yazarken ilk yöntemi erişebilirsiniz:
> $this->myPublicMethod();
Ama başarılı ikinci bir koşamam:
> $this->myPrivateMethod();
Eğer herhangi bir fikrin var mı, ya da bunu yapmak için izin verir PHP için herhangi bir kütüphane varsa?
Thanks a lot!