Je veux comparer la classe d'un objet avec la classe courante, et dans les méthodes héritées pour faire référence à la classe parente. Ceci est la seule façon que je peux penser à le faire:Comment puis-je comparer un objet avec la classe parent en 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
Cela fonctionne parce que l'auto fait référence à la classe parente des méthodes héritées, mais il semble excessif d'avoir à instancier une classe chaque fois que je veux faire une comparaison .
Y a-t-il un moyen plus simple?
Oh je vois! __CLASS__ et get_class() ont le même comportement que self dans les méthodes héritées. Merci beaucoup! Mon ami vient aussi de me donner la solution élégante: return $ obj instanceof self; – peterjwest
$ obj instanceof ne fonctionnera pas: $ bar-> compare (nouvelle barre); sera vrai – Greg
Merci, je viens de le découvrir par moi-même! – peterjwest