Stanislav Malyshev wrote:
>> that if you try to "combine" two files that contain import statements,
>> it will be necessary to expand the imports. Fortunately, since
>
> What do you mean by "expand"?
>
>> import allows aliasing specific namespaced files and classes within a
>> file. For example:
>
> But import has nothing to do with files. import works on names, not files.
s/files/functions/ I mis-typed and didn't notice, sorry.
>> <?php
>> namespace foo {
>> class bar {}
>> }
>> import foo::bar;
>> namespace gronk {
>> class bar {}
>> }
>> ?>
>>
>> Fatal error: Class name 'bar' coflicts with import name
>
> Ouch! So I can't actually combine namespaces from different areas -
> how I'm supposed to know when I write "gronk" that somebody is going
> to stick this code into the context that already has the name "bar" in
> it? It's exactly the problem namespaces are meant to solve! Moreover,
> if you take two files with working code and copy-paste them into one
> file, they have a lot of chance of stopping working. If this isn't
> confusion, I don't know what is.
Careful Stas :), you probably missed the "import foo::bar;" This code
works just fine:
<?php
namespace foo {
class bar {}
}
namespace gronk {
class bar {}
}
?>
No fatal errors, everybody is happy. The problem is importing the "bar"
identifier. This code also fails with the same fatal error for the same
reason:
file1.php:
<?php
namespace foo;
class bar {}
?>
file2.php:
<?php
namespace gronk;
import foo::bar;
class bar {}
?>
>> That will clear up any possible confusion.
>
> No, on the contrary - it would create a lot of confusion, since now
> you can break namespaced code with code outside namespace, which
> wasn't supposed to happen by definition.
It still doesn't. As I pointed out above, the same error is possible
with the current implementation pre-my patch.
>> Well it kind of makes namespaces behave more like namespaces, don't you
>
> Please stop this "only C++ implementation is right" thing.
I don't care about C++. I'm only talking about the patch I proposed.
Thanks,
Greg
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php