Lukas Kahwe Smith wrote:
On 13.08.2008, at 22:18, Stanislav Malyshev wrote:
Simply include a script from two locations with different namespaces
or one
with namespace and the otherone without.
I'm afraid you misunderstand how namespaces work. As I explained
numerous times, namespaces are file-local, and this when including
file, it does not matter a bit what was including context.
I think Marcus is talking about files that are included that do not
specify a namespace explicitly. In this situation the context does matter.
We do not know if the developer in question is aware that the context
would matter in this case. Actually like I said in a previous email it
would be nice to at least not throw a warning if the file that is
included specifies an explicit namespace (I assume that is possible?).
Maybe adding a new "include" is a solution. This way developers can say
explicitly what they want to do without having to suppress the warning.
Then again quickly some smartass developer is going to teach people that
these annoying warnings go away if you just use this new include
everywhere. Then again, I am not sure if I even have my head wrapped
around this entire namespace thing.
Please, no new include. It's bad enough that we have 4 different ones
as it is.
The question here comes down to how we are going to teach people how
namespaces work when they write code that might visually and logically
be expected to add the included functions and classes to the namespace
where in fact they won't.
We can either throw warnings, as per Marcus' patch, or we can document
the crap out of it. The warnings will force people to learn with the
big drawback that there are many valid use cases and warnings in PHP,
even if turned off via error_reporting, are quite expensive. So,
without some sort of short-circuiting of our current error logic, which
would break error_get_last(), I am against adding an E_NOTICE or an
E_STRICT, for cases that might have a correct use.
This is something we are going to have to think more about in PHP 6
because of all the new E_STRICTs. We might want to bite the bullet and
change error_get_last to respect the error_reporting level, or perhaps
just ignore E_STRICT when it isn't enabled.
-Rasmus
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php