Proposal: namespace the SPL
| From: | Levi Morrison | Date: | Thu, 11 Feb 2021 16:39:16 +0000 |
| Subject: | Proposal: namespace the SPL | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-113141@lists.php.net to get a copy of this message | ||
Hello, everyone,
There has been a lot of disagreement about namespacing, and people
seem to have different viewpoints. I am not sure how to reconcile this
broader discussion.
However, there are certain names in the global namespace which I am
hopeful we can revolve. For instance,
SplObserver, SplQueue,
SplFixedArray, etc all follow the Spl prefix. There is already an
established "namespace" for these names.
So here is my limited proposal:
1. We create names in the Spl namespace that are aliases to their
equivalent types with the Spl prefix:
Spl\FixedArray -> SplFixedArray
Spl\Queue -> SplQueue
a. The new names are the aliases so any code which uses
get_class($obj) will not have the name change on them in a minor
release (8.1).
b. We may switch the direction of this alias in 9.0.
2. Any new types going into ext/spl use the Spl namespace. New
types added to ext/spl should be either related to data structures
or iterators, which is the bulk of what the SPL is.
a. This rule is to help prevent the SPL from becoming the dumping
grounds for new types.
3. We leave functions alone for now.
Let me know what you think. I am hopeful this approach will work because:
1. It is focused on a specific area which already has an established
"namespace", but in name-only (not technically).
2. It does not try to solve the larger problem, which has a lot of
disagreement.
3. I will be proposing new types for ext/spl soon (ReverseIterator
and an array iterator that is more efficient than \ArrayIterator),
and Tyson Andre has already proposed CachedIterable and company
which is in ext/spl, so this space has active development.
Thank you for your time.