>  기사  >  백엔드 개발  >  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

그의 메소드는 ClassOne 클래스가 아닌 ClassOneDelegator 프록시 클래스를 통해 구현된 것을 확인할 수 있습니다.

마찬가지로 다음 코드도 실행할 수 있습니다.

<?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으로 문의하세요.