Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- abstract class package_class
- {
- private function __inPackage($class) {
- $self = get_class($this);
- return strpos($class, $self) === 0;
- }
- public function __call($method, $arguments) {
- $backtrace = debug_backtrace();
- $class = $backtrace[2]['class'];
- if ($this->__inPackage($class)) {
- call_user_func_array(array($this, $method), $arguments);
- }
- }
- public function __get($var) {
- $backtrace = debug_backtrace();
- $class = $backtrace[1]['class'];
- if ($this->__inPackage($class)) {
- return $this->$var;
- }
- }
- }
- class some_package_class extends package_class
- {
- protected $string2 = ' World';
- protected function output($string1) {
- echo $string1;
- }
- }
- class some_package_class_hook
- {
- public function output(some_package_class $instance, $string1) {
- $instance->output($string1);
- echo $instance->string2;
- }
- }
- $class = new some_package_class();
- $hook = new some_package_class_hook();
- //Output "Hello World"
- $hook->output($class, 'Hello');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement