程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP反射機制用法實例,php反射實例

PHP反射機制用法實例,php反射實例

編輯:關於PHP編程

PHP反射機制用法實例,php反射實例


本文實例講述了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();
?>

希望本文所述對大家的PHP程序設計有所幫助。


什是PHP的反射機制

也可以叫映射。說直白點,他不僅能克隆到對象,而且可以調用對象的變量甚

至方法,挺強大的。php API5關於與對象有解釋,有機會可以看下,類似於

java中的。當然,這種特性,足以證明php與asp還是有很大區別的!
 

JAVA的反射機制的原理是什 最好還可以帶上個怎使用反射機制的例子

Field[] fields = object.getClass().getDeclaredFields();
for (int j = 0; j < fields.length; j++) {
try {
Method method = object.getClass().getMethod("get" + name.substring(0, 1).toUpperCase()
+ name.substring(1), new Class[] {});
Object result = method.invoke(object, new Object[] {});
} catch (Exception e) {
e.getStackTrace();
}
}
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved