forbid use declaration outside of a namespace in PHP 7
| From: | Robert Stoll | Date: | Wed, 29 Oct 2014 19:54:56 +0000 |
| Subject: | forbid use declaration outside of a namespace in PHP 7 | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-78446@lists.php.net to get a copy of this message | ||
Heya,
I always found it very ugly that it is possible to define a use outside of a namespace. Consider the
following:
namespace{ //default namespace
}
use foo\Bar;
namespace test{
new Bar(); //error, test\Bar not found
}
After some thoughts it is quite clear that Bar is test\Bar and not foo\Bar inside of the namespace
test. But consider
the following example which is not so obvious:
use foo\Bar;
namespace test;
new Bar(); //error, test\Bar not found
The use declaration looks like a normal use declaration at first glance.
I do not see why we should actually support this "feature" any longer and thus suggest to
remove it in PHP 7. Although,
it is not a bug (the use declaration is simply ignored as far as I can tell) I suppose it confuses
the user.
Nevertheless, even if we declare it as a "feature" I think it should at least not be a
"feature" of the specification of
PHP 7.
Thoughts?
Cheers,
Robert
ps: I first started the discussion @standards, just if you should wonder why it pops up here now as
well:
http://news.php.net/php.standards/528