|
本文實例講述了php反射機制的用法,分享給大家供大家參考之用。具體方法如下:
演示示例代碼如下所示:
<?phpclass 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();?>
輸出結(jié)果:
In Class One
可見,通過代理類ClassOneDelegator來代替ClassOne類來實現(xiàn)他的方法。
同樣的,如下的代碼也是能夠運行的:
<?phpclass 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();?>
希望本文所述對大家的php程序設(shè)計有所幫助。
php技術(shù):PHP反射機制用法實例,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。