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

Reply via email to