Advertisement
Guest User

Christian Opitz

a guest
Sep 22nd, 2010
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.03 KB | None | 0 0
  1. <?php
  2. abstract class package_class
  3. {
  4.     private function __inPackage($class) {
  5.         $self = get_class($this);
  6.         return strpos($class, $self) === 0;
  7.     }
  8.  
  9.     public function __call($method, $arguments) {
  10.             $backtrace = debug_backtrace();
  11.             $class = $backtrace[2]['class'];
  12.        
  13.         if ($this->__inPackage($class)) {
  14.                 call_user_func_array(array($this, $method), $arguments);
  15.             }
  16.     }
  17.    
  18.     public function __get($var) {
  19.         $backtrace = debug_backtrace();
  20.         $class = $backtrace[1]['class'];   
  21.    
  22.         if ($this->__inPackage($class)) {
  23.             return $this->$var;
  24.         }
  25.     }
  26. }
  27.  
  28. class some_package_class extends package_class
  29. {
  30.     protected $string2 = ' World'; 
  31.  
  32.     protected function output($string1) {
  33.         echo $string1;
  34.     }
  35. }
  36.  
  37. class some_package_class_hook
  38. {
  39.     public function output(some_package_class $instance, $string1) {
  40.        
  41.         $instance->output($string1);
  42.        
  43.         echo $instance->string2;
  44.     }
  45. }
  46.  
  47. $class = new some_package_class();
  48. $hook = new some_package_class_hook();
  49. //Output "Hello World"
  50. $hook->output($class, 'Hello');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement