|
<?php |
|
class Bar { |
|
public function A() |
|
{ |
|
echo __METHOD__, PHP_EOL; |
|
} |
|
|
|
private function B() |
|
{ |
|
echo __METHOD__, PHP_EOL; |
|
} |
|
} |
|
|
|
class Bat { |
|
public function __call($function, $args) |
|
{ |
|
$bar = new Bar(); |
|
if (is_callable(array($bar, $function))) { |
|
$bar->{$function}(); |
|
} else { |
|
$closure = function() use ($function, $bar) { |
|
$bar->{$function}(); |
|
$this->C(); |
|
$this->D(); |
|
}; |
|
|
|
$bustOO = Closure::bind($closure, $this, $bar); |
|
|
|
$bustOO(); |
|
} |
|
} |
|
|
|
public function C() |
|
{ |
|
echo __METHOD__, PHP_EOL; |
|
} |
|
|
|
private function D() |
|
{ |
|
echo __METHOD__, PHP_EOL; |
|
} |
|
} |
|
|
|
$bat = new Bat(); |
|
$bat->A(); |
|
$bat->B(); |