Re: Function auto-loading
| From: | Stanislav Malyshev | Date: | Wed, 10 Aug 2016 08:58:41 +0000 |
| Subject: | Re: Function auto-loading | ||
| References: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-94988@lists.php.net to get a copy of this message | ||
Hi!
> Having the use statement trigger the auto-loader would result in a lot
> of broken code because of optional dependencies (remember the examples I
> showed you in the annotation thread).
I think it's not a good idea in general. use statement right now is
basically a syntax sugar - you just change interpretation of names. But
you don't cause anything to load by this statement. Changing it would
mean people have to change a lot of assumptions about what is loaded
when. E.g., there's a lot of code which use's classes and spaces that
may not even exist - just because they *might* exist in some scenarios,
and will be used in those scenarios, further down in the code.
I don't think completely changing the semantics of a very widely used
statement is anything we should be doing.
> This would make it even more painful for users to define anything in the
> global namespace; a good thing.
No it's not. Why should it be a good thing?
> It would however encourage people to prefix their stuff inline with a
> backslash, otherwise you end up with an endless use chain for every
I'm sorry but this is horrible. PHP code should not look like a fence of
backslashes, backslashes do not have any useful function there and in
99.9999% of cases global functions *are* global functions, and nobody is
overriding them. Yes, you can override strlen. No, nobody (within
0.00001% accuracy) does.
> built-in feature which is not nice. That being said, it's required
> anyways if we are really going to introduce namespaces for everything
> within PHP (e.g.
use function php\random_bytes;). Something I
> still
> think is a bad idea at least for procedural first-level functions.
It's a bad idea for all existing functions and classes. Because it adds
complications for people without giving them anything in exchange.
--
Stas Malyshev
smalyshev@gmail.com