#!/usr/local/bin/php coef = 2; } private $cb = [__CLASS__, 'test']; private function test($bar) { return $bar * $this->coef; } public function __invoke($baz) { return dynamize($this->cb, $this)($baz); } } class Foo { use Wat; } function dynamize(callable $callable, $scope = null) { $cb = function(...$args) use ($callable) { return call_user_func_array($callable, $args); }; $cb->bindTo($scope); return $cb; } function callee() { $callStack = debug_backtrace(); return $cb[1]['object']; } echo (new Foo)(7);