2016-10-21 2 views
3

instanceof 호출에 많은 시간이 걸리는 이유를 모르겠습니다.instanceof 호출을 사용하는 데 시간이 오래 걸리는 이유는 무엇입니까?

public function isPlayer(){ 
    return true; 
} 

을 그리고 다음을 수행하십시오 : 나는 플레이어 클래스에이를 추가하면

if($this instanceof Player){ 
    // Lags the server. 
} 

하지만, 예를 들어

if($this->isPlayer()){ 
    //Super fast. 
} 

이 훨씬 빠릅니다. 그래서, 내가 할 때 if ($this instanceof Player) 그 시간 동안 서버가 실제로 무엇입니까?

+1

실제로 is_a 함수보다 빠릅니다. 이 흥미로운 질문을보십시오 : http://stackoverflow.com/questions/3017684/what-is-the-difference-between-is-a--instanceof – nanocv

+1

당신의 상속 체인은 얼마나 깊이 중첩되어 있습니까? 예 : '$ this '가 20 번째 세대의 플레이어 확장이라면, 체인 v.s를 백업하는 데 시간이 걸릴 것입니다. 그것이 직접'$ this extends Player' 단일 세대라면 –

+0

흥미 롭습니다.하지만 저는 is_a() 메소드를 사용하지 않았습니다. 나는 단순히 모든 엔티티 클래스 인 isPlayer()에 함수를 넣고 참 또는 거짓이면 값을 반환하고,이 함수를 사용하면 instanceof 연산자를 피할 수 있습니다. – Callerap

답변

관련 문제