> Compiler shouldn't generate different code. Unqualified name is resolved
>   at runtime, but code should be the same whatever resolution was made.
> Did you check that different code is indeed generated?
zend_compile.c
===============
                        if (zend_hash_find(CG(class_table), lcname,
Z_STRLEN(class_name->u.constant)+1, (void**)&pce) == SUCCESS &&
                            (*pce)->type == ZEND_INTERNAL_CLASS) {
                            /* There is an internal class with the same name 
exists.
                               PHP will need to perform additional cheks at 
run-time to
                               determine if we assume class in current 
namespace or
                               internal one. */
                                *fetch_type |= ZEND_FETCH_CLASS_RT_NS_CHECK;
                        }

it's an optimization and assume that internal class never change

let me guess, if you have php_abc.so which have "internal" (well, 3rd
party) "class abc" not loaded when you encode php files with
ZendEncoder
namespace mynamespace;
var_dump(new abc());
but you do load file for production server, you still get "undefined
class mynamespace::abc" at runtime, internal class abc is never
checked.

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

Reply via email to