클래스가 있는지 여부와 인터페이스를 구현하는지 여부를 확인하고 싶습니다. 아래 두 가지 모두 작동해야합니다. 어느 것이 선호되어야하며 그 이유는 무엇입니까?클래스가 존재하고 인터페이스를 구현하는지 확인하기 위해 리플렉션 또는 인스턴스화를 사용해야합니까?
//이 클래스가 존재하는 경우, 확인을 인스턴스화하고 그것이 주석에게
if(class_exists($classname)){
$r=new new ReflectionClass($classname);
if($r->implementsInterface('Annotation)) {//do something}
}
를 구현하는 경우 클래스가 존재하는 경우, 확인 그것의 반사를하고 알아 // 주석에게
if(class_exists($classname)){
$tmp=new $classname;
if($obj instanceof Annotation) {//do something}
}
를 구현하는지 확인
인스턴스가 있습니까 (아니면 어쨌든 인스턴스를 만들 것입니까?)? 아니면 수업을 검사하고 싶습니까? 때로는 객체를 만드는 것이 부작용, 보호 된 생성자, 지연로드 등으로 인해 옵션이 될 수 없습니다. – VolkerK
실제로 필요하기까지 인스턴스 생성을 지연하려고합니다. 초기화되지 않은 인스턴스 ('$ tmp'와 같은)는 그리 나쁘지는 않지만 초기화 된 인스턴스는 매우 클 수 있습니다. – dnagirl