>백엔드 개발 >PHP 문제 >PHP 반영의 원리

PHP 반영의 원리

(*-*)浩
(*-*)浩원래의
2019-09-03 13:51:473312검색

PHP 반영의 원리

반성이란 무엇인가요?

PHP 객체 지향 프로그래밍의 객체에는 시스템에 의해 내부 검사 기능이 부여되며 이러한 내부 검사 프로세스를 리플렉션이라고 합니다.

반사에 대한 우리의 직관적인 이해는 도착점을 기준으로 출발점과 소스를 찾는 과정일 수 있습니다. .어떤 방법이 있나요?

PHP에서 리플렉션이란 PHP 실행 상태에서 PHP 프로그램 분석을 확장하고, 주석을 포함하여 클래스, 속성, 메서드, 매개 변수 등에 대한 자세한 정보를 내보내거나 추출하는 것을 의미합니다. 동적으로 정보를 얻고 객체 메소드를 동적으로 호출하는 기능을 리플렉션 API라고 합니다.

코드를 통해 느껴보자:

class person{
    public $name;
    public $age;
 
    public function say()
    {
        echo $this->name."<br>".$this->age;
    }
 
    public function set($name,$value)
    {
        echo &#39;set name to value&#39;;
        $this->$name = $value;
    }
 
    public function get($name)
    {
        if(!isset($this->$name)){
            echo &#39;unset name&#39;;
            $this->$name = &#39;seting~~~&#39;;
        }
 
        return $this->$name;
    }
}
 
$stu = new person();
$stu->name = &#39;luyaran&#39;;
$stu->age = 26;
$stu->sex = &#39;girl&#39;;

위 코드는 간단한 클래스를 인스턴스화하고 값을 할당하여 의미를 부여합니다.

그런 다음 리플렉션 API를 통해 이 stu 개체의 메서드 및 속성 목록을 가져오겠습니다.

//获取对象的属性列表
$reflect = new ReflectionObject($stu);
$props = $reflect->getProperties();
foreach ($props as $key_p => $value_p) {
    var_dump($value_p->getName());
}
//获取对象的方法列表
$method = $reflect->getMethods();
foreach ($method as $key_m => $value_m) {
    var_dump($value_m->getName());
}

동시에 리플렉션은 클래스 및 개체뿐만 아니라 함수, 확장 모듈, 예외에도 사용할 수 있습니다. , 등.

여기서는 자세히 설명하지 않겠습니다. 마지막 부분에서는 반사의 몇 가지 기능에 대해 이야기하겠습니다.

우선 문서 생성에 사용할 수 있기 때문에 문서에 있는 클래스를 스캔하여 스캔한 문서를 하나씩 생성하는데 사용할 수 있습니다.

Reflection은 클래스의 내부 구조를 감지할 수 있고, 플러그인 기능을 구현하기 위한 후크로 사용될 수도 있으며, 동적 프록시로 사용될 수도 있습니다.

위 내용은 PHP 반영의 원리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.