Demo Code As follows:
Copy code The Code is as follows: <? PHP
Class classone {
Function callclassone (){
Print "in Class One ";
}
}
Class classonedelegator {
Private $ targets;
Function _ construct (){
$ This-> target [] = new classone ();
}
Function _ call ($ name, $ ARGs ){
Foreach ($ this-> target as $ OBJ ){
$ R = new reflectionclass ($ OBJ );
If ($ method = $ R-> getmethod ($ name )){
If ($ method-> ispublic ()&&! $ Method-> isabstract ()){
Return $ method-> invoke ($ OBJ, $ ARGs );
}
}
}
}
}
$ OBJ = new classonedelegator ();
$ Obj-> callclassone ();
?>
output result:
in Class One
it can be seen that the classonedelegator of the proxy class replaces the classone class to implement its method.
Similarly, the following code can be run: copy Code the code is as follows: class classone {
function callclassone () {
Print "in Class One ";
}< BR >}< br> class classonedelegator {
private $ targets;
function addobject ($ OBJ) {
$ this-> target [] = $ OBJ;
}< br> function _ call ($ name, $ ARGs) {
foreach ($ this-> target as $ OBJ) {
$ r = new reflectionclass ($ OBJ );
if ($ method = $ R-> getmethod ($ name) {
if ($ method-> ispublic ()&&! $ Method-> isabstract () {
return $ method-> invoke ($ OBJ, $ ARGs );
}< BR >}< br> $ OBJ = new classonedelegator ();
$ obj-> addobject (New classone ();
$ obj-> callclassone ();
?>