php 의 반사 상세 해석 및 예시 코드
class Foo {
public $foo = 1;
protected $bar = 2;
private $baz = 3;
/**
* Enter description here ...
*/
public function myMethod()
{
echo 'hello 2b';
}
}
$ref = new ReflectionClass('Foo');
$props = $ref->getProperties();
foreach ($props as $value) {
echo $value->getName()."
";
}
//output
//foo
//bar
//baz
ReflectionClass 라 는 클래스 가 되 돌아 올 때 특정한 유형의 관련 정보,예 를 들 어 속성,방법,네 임 스페이스,인터페이스 실현 등!이전 예 에서 ReflectionClass:getProperties 는 ReflectionProperties 대상 의 배열 을 되 돌려 줍 니 다.ReflectionProperty 류 는 클래스 의 속성 에 관 한 정 보 를 보고 합 니 다.예 를 들 면 isDefault isPrivate isProtected isPublic isStatic 등 방법 getName 은 속성 을 가 져 오 는 이름 입 니 다!
이상 은 속성 을 얻 는 것 이 고,클래스 를 얻 는 방법 도 있 습 니 다.예 를 들 어
class Foo {
public $foo = 1;
protected $bar = 2;
private $baz = 3;
/**
* Enter description here ...
*/
public function myMethod()
{
echo 'hello 2b';
}
}
$ref = new ReflectionClass('Foo');
$method = $ref->getMethod('myMethod');
$method->invoke($ref->newInstance());
ReflectionClass:getMethod 는 반대로 ReflectionMethod 유형 입 니 다.ReflectionMethod 류 는 방법 에 대한 정 보 를 보 고 했 습 니 다.예 를 들 어 isAbstract isPrivate 입 니 다. isProtected isPublic isStatic isConstructor,그리고 중요 한 방법 이 있 습 니 다.Invoke,InvokeArgs 가 바로 실행 방법 입 니 다!다른 대상 은 수첩 을 볼 수 있 습 니 다.어렵 지 않 습 니 다!
그 반 사 는 도대체 어떤 용도 가 있 습 니까?
반 사 는 동적 운행 의 개념 으로 그들 을 종합 적 으로 사용 하면 우리 가 다른 유형,인터페이스,방법,속성,방법 과 확장 을 분석 하 는 데 도움 을 줄 수 있다.동적 에이전트 와 같은 모델 도 구축 할 수 있다.일부 phop 프레임 워 크 에서 반사 도 자주 사용 합 니 다.예 를 들 어 kohana,yii,다음은 kohana 의 뮤 직 비디오 실현 코드 입 니 다.바로 반사!
// Start validation of the controller
$class = new ReflectionClass(ucfirst(Router::$controller).'_Controller');
// Create a new controller instance
$controller = $class->newInstance();
// Load the controller method
$method = $class->getMethod(Router::$method);
// Execute the controller method
$method->invokeArgs($controller, $arguments);
위의 코드 는 이 프레임 의 절 차 를 뚜렷하게 볼 수 있 습 니 다!Router 를 통 해 url 클래스 를 처리 합 니 다.Router 를 통 해 어떤 컨트롤 러,어떤 방법 을 얻 을 수 있 습 니까?그리고 방법 을 집행 하 겠 습 니 다!이상 은 바로 PHP 에 반 사 된 자 료 를 정리 하고 후속 적 으로 관련 자 료 를 계속 보충 하 는 것 입 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.