개체의 클래스를 현재 클래스와 비교하고 상속 된 메서드에서 부모 클래스를 참조하려고합니다. 이것은 내가 그 일을 생각할 수있는 유일한 방법입니다 : 자기가 상속 방법에서 상위 클래스를 참조하기 때문에PHP에서 부모 클래스와 객체를 어떻게 비교할 수 있습니까?
class foo { function compare($obj) { return get_class($obj) == get_class(new self); } }
class bar extends foo { }
$foo = new foo;
$foo->compare(new foo); //true
$foo->compare(new bar); //false
$bar = new bar;
$bar->compare(new foo); //true
$bar->compare(new bar); //false
이 작동하지만, 내가 비교를 할 클래스마다의 인스턴스를 가지고 과도한 것 같다 .
더 간단한 방법이 있습니까?
return get_class($obj) == __CLASS__;
심지어 단지 인수없이 get_class()을 사용합니다 :
이return get_class($obj) == get_class();
아 내가 볼! __CLASS__ 및 get_class()는 상속 된 메서드에서 self와 동일한 비헤이비어를가집니다. 고마워요! 내 친구도 내게 우아한 해결책을주었습니다. return $ obj instanceof self; – peterjwest
$ obj instanceof self는 작동하지 않습니다 : $ bar-> compare (new bar); 사실 일 것입니다 – Greg
고마워요, 저는 방금 나 자신을 위해 이것을 발견했습니다! – peterjwest