[RFC] Namespace-scoped declares, again
| From: | Nikita Popov | Date: | Mon, 11 Dec 2017 13:43:41 +0000 |
| Subject: | [RFC] Namespace-scoped declares, again | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-101323@lists.php.net to get a copy of this message | ||
Hi internals!
Some time ago I introduced the following proposal for namespace-scoped
declares:
https://wiki.php.net/rfc/namespace_scoped_declares
The idea is to allow specifying declare directives for a whole library or
project using:
namespace_declare('Vendor\Lib', ['strict_types' => 1]);
I've finally gotten around to implementing this proposal (
https://github.com/php/php-src/pull/2972) and
would like to move forward
with it.
The reason why I'm picking it up again is some feedback I received for the
explicit call-time send-by-ref proposal. The main objection seems to be
that the feature has limited usefulness if it's optional rather than
required, because you still can't be sure that something is a by-value
pass, just because no & is present. At the same time, we can't make this
required anytime soon due to the large BC impact.
Namespace-scoped declares are perfectly suited to resolve this problem. We
can introduce a require_explicit_send_by_ref declare directive to make the
call-site annotation required, and libraries/projects can easily opt-in to
it using namespace_declare(). There would be no BC impact, while at the
same time projects could benefit from the additional clarity and
performance improvements immediately.
Thanks,
Nikita