首頁  >  文章  >  後端開發  >  PHP反射機制用法實例程式碼

PHP反射機制用法實例程式碼

怪我咯
怪我咯原創
2017-07-12 16:21:481094瀏覽

這篇文章主要介紹了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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn