> Or if the aim is to simplify the reflection usage, why require the if
> statement at all:
>
> try {
>     $r = $type->getReflectionClass();
> } catch ( ReflectionException $e ) {
>     // type is builtin or refers to an undefined class
> }

I don't think this is actually simpler if you expand the comment to
handle both cases:

    try {
        $r = $type->getReflectionClass();
       handle_class($type);
    } catch (ReflectionException $e) {
        if ($type->isBuiltin()) {
            handle_builtin();
        } else {
            handle_undefined($type);
        }
    }

Compare that to using only if-else for control flow:

    if ($type->isBuiltin()) {
        handle_builtin();
    } else if ($type instanceof ReflectionClassType) {
        handle_class($type);
    } else {
        handle_undefined($type);
    }

I'd much prefer the latter.

Another option is adding a method `hasClass()` that would return
`true` if a `getClass()` call would be considered valid and `false`
otherwise. To me this doesn't seem as good as subtypes but consider it
better than forcing a caller to handle an exception in a situation
that I don't consider exceptional.

It would have been great if people actually contributed to the
discussion before voting phase, but such is life.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to