Quoting Stanislav Malyshev <[EMAIL PROTECTED]>:

import Exception;
-> name conflict, which seems correct

import Exception is a no-op, so I don't understand how you could have got name conflict. Do you mean "import Test::Exception"? That should work, if it didn't it's a bug.

It turns out that this does not happen with CVS PHP 5.3. With Greg's first patch for fixing multiple uses of import Test::Exception, however, this is the reproduce script and error:

<?php

namespace Foo;
import Exception;

results in:

Maya:/tmp chuck$ php import_exception.php

Fatal error: Import name 'Exception' conflicts with defined class in /private/tmp/import_exception.php on line 4


Also, with unpatched 5_3 CVS, I get this:

Warning: The import statement with non-compound name 'Exception' has no effect in /tmp/import_exception.php on line 4

I think that either import ::Exception needs to work, or import Exception shouldn't issue a warning.

import Exception as Error;
-> Fatal error: Import name 'Error' conflicts with defined class in /Users/chuck/Desktop/php namespaces/2.php on line 4
(this I don't understand)

I'm afraid I am missing something since in line 4 of 2.php there's no definition of any class or import. Can you give me full examples of non-working parts? It might be there's some bug in there.

This is another one that only happens with Greg's initial patch (I haven't tried the next one yet Greg, sorry). For Greg's benefit here's the reproduce script:

<?php

namespace Foo;
import Exception as Error;


And result:

Maya:/tmp chuck$ php import_exception_alias.php

Fatal error: Import name 'Error' conflicts with defined class in /private/tmp/import_exception_alias.php on line 4


import ::Exception as Error;
-> parse error (can't import a top-level class name that way)

Well, we might allow importing global classes, if it's needed.

I think this would be a good thing.

Therefore, in my mind, in order to write durable code that will not break no matter what other classes other developers define or import, I should always prefix builtin classes with ::.

Other developers shouldn't define or import classes into your namespace...

I think you need to envision working in a large team on a large project here, but you may simply not see the need.

-chuck

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

Reply via email to