이 글은 주로 PHP가 리플렉션을 통해 클래스를 얻는 방법과 몇 가지 기본 응용 프로그램을 소개합니다. 이제 특정 참조 값을 가지고 있으므로 도움이 필요한 친구들이 참조할 수 있습니다.
라라벨의 핵심 코드를 살펴보았습니다. 요즘 프레임워크 . 반사 메커니즘의 광범위한 사용을 발견했습니다. 몇 가지 리플렉션 애플리케이션을 간략하게 살펴보겠습니다
class A { private $_foo = 'this is a'; public function index() { return $this->_foo; } private function _come($param) { return 'this is come'.$param; } } $refClass = new ReflectionClass('A');//获得反射
이 리플렉션을 사용하여 A
의 프라이빗 속성을 가져오겠습니다A
的私有属性
$privateParams = $refClass->getDefaultProperties(); print_r($privateParams);//得到结果 Array ( [_foo] => this is a ) echo $privateParams['_foo'];//得到 this is a
这样我们就可以很轻松的获得A
的私有属性了。那么执行私有方法应该怎么操作呢。接下来我们先看执行共有方法,执行公有方法比较简单。
/****************获得类的实例*******************/ $class = $refClass->newInstance(); echo $class->index();
这样就可以调用公有的方法了。下面看执行私有方法
/****************获取A的方法*******************/ $refHasClass = $refClass->getMethods(); print_r($refHasClass); /*** * Array ( [0] => ReflectionMethod Object ( [name] => index [class] => A ) * [1] => ReflectionMethod Object ( [name] => _come [class] => A ) ) */ $come = $refClass->getMethod('_come'); $come->setAccessible(true); echo $come->invoke($class,'this is param'); // this is athis is comethis is param
先通过getMethod()
就可以获取到come
方法,然后设置come
方法的可访问性。最后通过invoke
rrreee
A
의 프라이빗 속성을 쉽게 얻을 수 있습니다. 재산. 그렇다면 Private 메소드를 실행하려면 어떻게 해야 할까요? 다음으로 먼저 공개 메소드 실행을 살펴보겠습니다. 공개 메소드 실행은 비교적 간단합니다. rrreee이 방법으로 공개 메소드를 호출할 수 있습니다. private 메소드 실행을 살펴보겠습니다
rrreee
먼저getMethod()
를 통해 come
메소드를 가져온 후, come
에 대한 접근성을 설정할 수 있습니다. 코드> 방법. 마지막으로 invoke
를 통해 메소드를 실행합니다. 이 외에도 반영할 수 있는 메소드가 많기 때문에 여기서는 하나씩 다루지 않겠습니다. 관심 있는 분들은 공식 문서를 참고하세요위 내용은 모두의 학습에 도움이 되기를 바랍니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요! php7+의 php-fpm 매개변수 구성에 대한 참고 사항🎜🎜🎜위 내용은 PHP는 리플렉션을 사용하여 클래스와 일부 기본 애플리케이션을 얻습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!