fork download
  1. <?php
  2.  
  3. class TargetClass
  4. {
  5. public function A($a, $b) {}
  6. public function B($c, $d) {}
  7. public function C($e, $f) {}
  8. }
  9.  
  10. class LoggingDecorator
  11. {
  12. private $_target;
  13.  
  14. public function __construct($target)
  15. {
  16. $this->_target = $target;
  17. }
  18.  
  19. public function __call($name, $params)
  20. {
  21. $this->_log($name, $params);
  22.  
  23. return call_user_func_array(array($this->_target, $name), $params);
  24. }
  25.  
  26. private function _log($name, $params)
  27. {
  28. echo $name . ' has been called with params: ' . implode(', ', $params) . '<br>';
  29. }
  30. }
  31.  
  32. $target = new TargetClass();
  33. $logger = new LoggingDecorator($target);
  34.  
  35. $logger->A(1, 2);
  36. $logger->A(3, 4);
Success #stdin #stdout 0.02s 13112KB
stdin
Standard input is empty
stdout
A has been called with params: 1, 2<br>A has been called with params: 3, 4<br>