class merge_objs{ |
private $classArr = array (); |
function __construct() { |
$this -> classArr = func_get_args(); |
} |
function __get( $s ) { |
foreach ( $this -> classArr as $c ) { |
if (property_exists( $c , $s )) { |
return $c -> $s ; |
} |
} |
} |
function __call( $fn , $args ) { |
foreach ( $this -> classArr as $c ) { |
if (method_exists( $c , $fn )) { |
return call_user_func_array( array ( $c , $fn ), $args ); |
} |
} |
} |
} |
|
//测试 |
class a1 { |
public $a = 'a' ; |
public function a() { |
return 'a' ; |
} |
} |
class b1 { |
public $b = 'b' ; |
public function b() { |
return 'b' ; |
} |
} |
class c1 { |
public $c = 'c' ; |
public function c() { |
return 'c' ; |
} |
} |
|
$m = new merge_objs( new a1(), new b1(), new c1()); |
var_dump( $m ->c); //c |
var_dump( $m ->b); //b |
var_dump( $m ->a); //a |
var_dump( $m ->a()); //a |
var_dump( $m ->b()); //b |
var_dump( $m ->c()); //c |