Re: wrong behaviour with is_subclass_of() ??
| From: | Jochem Maas | Date: | Fri, 19 Sep 2008 16:48:15 +0000 |
| Subject: | Re: wrong behaviour with is_subclass_of() ?? | ||
| References: | 1 2 3 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-280527@lists.php.net to get a copy of this message | ||
Johannes Mueller schreef:
Jochem Maas wrote:I think the reason for the current behaviour is that interface can be seen as an 'is a' relationship. is_subclass_of() looks specifically for an 'is a' relationship with regard to whatever is above in the class heriarchy ... there is nothing above A so it will always return false for A. so it's a little odd, but logical at the same time ... now the namespaces implementation as it currently stands ... that's a little psychotic :-)This was my starting point and is_subclass_of() was a sub-ordinate target, because i needed it on the class-side of life and not the instantiated way.B implements Ibecause B subclasses A and A implements I, I is not a base class. try the experiment with is_a() instead.also you should preferablly use the instanceof syntax: <?php $a = new A; $b = new B; if ($a instanceof I)) echo "A implements I\n"; if ($b instanceof I)) echo "B implements I\n"; or use the return data from class_implements(), is_subclass_of()class_implements() would solve all these problems were well!specifically looks at base classes ("extends"), I'm a little surprised that it even returns true for interfaces at all ("implements").And this was the reason where it stops to make sense for me. And if you hadn't pointed this out, this would have been in my next email.
Johannes