class rootObject { ... function isMemberOrInstanceOfClass($object) { $className = is_object($object) ? get_class($object) : $object; return ($this instanceof $className); } };
On Sat, Dec 19, 2009 at 2:20 AM, Johannes Mueller <johanne...@gmx.net> wrote: > Johannes "Schlüter" wrote: >> >> On Sat, 2009-12-19 at 01:42 +0100, Johannes Mueller wrote: >>> >>> if($foo instanceof bar){ >>> .. >>> } >>> // runs without any notification >> >> instanceof is a language construct expecting a class identifier. >> It doesn't complain about on-existing classes as it would need to >> trigger the __autoloader which might be way too much. >> >>> and >>> >>> if(is_a($foo, bar)){ >>> .. >>> } >>> // runs with an undefined constant bar notification >> >> is_a() is a function expecting a string. And this warning is unrelated >> to the fact that the class "bar" doesn't exist, but due to the way PHP >> treats undefined constants. > > Thank you for your answers, that is what I've expected. Unfortunately this > is sometimes annoying when using namespaces, where you have to take care of > the namespaces too. > > I do understand the performance impact of a more complex solution and my > fault was to mix two different operations. I expected instanceof and is_a() > to check if the class exists. > > My personal problem was, that I didn't recognized instanceof to treat the > requested class as a normal string, even it is not enclosed by quotation > marks. > > The only protective barrier in this case seems to be a skilled IDE, that > helps you to avoid referencing non existant classes. > > Cheers > Johannes > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php