Welcome to Abdul Malik Ikhsan's Blog

Call private/protected method without ReflectionMethod in PHP

Posted in php by samsonasik on July 21, 2019

For whatever reason, you may need to call private/protected method from an object. For example, we have a Foo class with bar method with private modifier like below:

class Foo
    private function bar()
        echo 'hit';

We need to call bar() method from an instance of Foo class. If you are familiar with ReflectionMethod, you may do this:

$r = new ReflectionMethod($foo = new Foo(), 'bar');

There is another way. It is by using invoked of Closure::bindTo() like below:

(function ($foo) {
})->bindTo($foo = new Foo(), Foo::class)($foo);

That’s it!

Tagged with: , ,