PHP反射機制實現動態代理的代碼

演示用代碼如下所示:

<?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();

?>

輸出結果:

In Class One

可見,通過代理類ClassOneDelegator來代替ClassOne類來實現他的方法。

同樣的,如下的代碼也是能夠運行的:

<?php

class ClassOne {

function callClassOne() {

print "In Class One";

}

}

class ClassOneDelegator {

private $targets;

function addObject($obj) {

$this->target[] = $obj;

}

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->addObject(new ClassOne());

$obj->callClassOne();

?>

利用反射機制實現XML-RPC
  動態回調基于XML的遠程過程調用摘要Java反射機制爲使用XML-RPC(XML-based Remote Procedure Call,基于XML的遠程過程調用)遠程過程調用提供了一種簡便又高效的實現方法,這種方法隱蔽掉了一些遠程過程調用過程中...查看完整版>>利用反射機制實現XML-RPC
 
利用反射機制實現XML-RPC
作者:)摘要Java反射機制爲使用XML-RPC(XML-based Remote Procedure Call,基于XML的遠程過程調用)遠程過程調用提供了一種簡便又高效的實現方法,這種方法隱蔽掉了一些遠程過程調用過程中的複雜操作。在這篇文章裏,...查看完整版>>利用反射機制實現XML-RPC
 
AJAX入門之使用for實現反射機制
  什麽是反射機制  反射機制指的是程序在運行時能夠獲取自身的信息。例如一個對象能夠在運行時知道自己有哪些方法和屬性。  在JavaScript中利用for(…in…)語句實現反射  在JavaScript中有一個很方便的語法來...查看完整版>>AJAX入門之使用for實現反射機制
 
利用反射實現類的動態加載(程序改正)
原有的上程序未能通過,本文增加之,謝謝原作者:最近在成都寫一個移動增值項目,俺負責後台server端。功能很簡單,手機用戶通過GPRS打開Socket與服務器連接,我則根據用戶傳過來的數據做出響應。做過類似項目的兄弟一定...查看完整版>>利用反射實現類的動態加載(程序改正)
 
利用反射實現類的動態加載
利用反射實現類的動態加載Bromon原創 請尊重版權最近在成都寫一個移動增值項目,俺負責後台server端。功能很簡單,手機用戶通過GPRS打開Socket與服務器連接,我則根據用戶傳過來的數據做出響應。做過類似項目的兄弟一...查看完整版>>利用反射實現類的動態加載
 
"函數遞歸"實現php和MySQL動態樹型菜單
  樹型菜單在很多桌面應用系統中都有非常廣泛的應用,其主要優點是結構清晰,利于使用者非常清楚的知道目前自己所在的位置。但在web上樹型菜單的應用因爲沒有理想的現成組件可以拿過來直接使用,所以一般的情況下,...查看完整版>>"函數遞歸"實現php和MySQL動態樹型菜單
 
關于如何用Java動態代理實現AOP的技術說明
目前整個開發社區對AOP(Aspect Oriented Programing)推崇備至,也湧現出大量支持AOP的優秀Framework,--Spring, JAC, Jboss AOP 等等。AOP似乎一時之間成了潮流。Java初學者不禁要發出感慨,OOP還沒有學通呢,又來AOP...查看完整版>>關于如何用Java動態代理實現AOP的技術說明
 
用PHP實現給上傳的圖片加水印的代碼
$uptypes=array('image/jpg','image/jpeg','image/pjpeg','image/gif');//上傳圖片文件類型列表$wFile="a.jpg";//取得文件路徑$waterimg="hq.gif";//水印圖片路徑if(in_array($wFile['type'], $uptypes)){//檢查文件...查看完整版>>用PHP實現給上傳的圖片加水印的代碼
 
PHP中利用mysql進行訪問統計的思路和實現代碼
看了網上很多統計都是使用文本來存儲信息的,但是那樣的話非常不方便,而且如果數據丟失了的話就很麻煩,如果存儲在數據庫裏的話就比較好,把WEB服務器和數據庫服務器分開的話,那麽就能夠長期的保持訪問統計的數據了...查看完整版>>PHP中利用mysql進行訪問統計的思路和實現代碼
 
 
回到王朝網路移動版首頁