On Sat, Jun 10, 2017 at 1:13 PM, Fleshgrinder <p...@fleshgrinder.com> wrote: > On 6/10/2017 8:54 PM, Levi Morrison wrote: >> I gave this feedback before but I'll repeat it. I support namespaces >> in the core, with the `PHP` namespace (with whatever capitalization we >> decide) to be reserved *solely* for things related to the language >> itself such as lexer, parser, etc. >> >> I am fine with other extensions using namespaces but should use >> appropriately named ones. Using the `PHP` namespace to indicate >> something is packaged in core is a poor decision. We have moved >> existing extensions into core and it would not make sense to rename it >> simply because it was moved into core because it's a backwards >> compatibility break. Similarly we've moved at least one extension out >> of core and it doesn't make sense for it to have the `PHP` name when >> it's not in core, but renaming it is yet other backwards compatibility >> break. It's simply not prudent. Instead extensions should be named >> after what they are, the vendor they are for, or some other name; this >> is the same process user-land packages go through and core should not >> be different. >> > > Thanks for that, much appreciated. > > This is exactly what I am proposing. Only things that are provided > directly from the PHP Group should go into the PHP namespace. Any- and > everything else should go into appropriate vendor namespaces. > > I think that you are considering e.g. array functions as not being part > of PHP, and that you want to put them in a separate namespace. So > effectively we would have something like: > > PHP\Lexer > Arrays\Array > IO\File > Logging\Logger > Reflection\Reflector > Strings\String > UUIDs\UUID > > I personally do not like this approach. PHP is the vendor of these > things, thus, it should reside in the namespace of the vendor. Same > rules for everyone. IO for instance is not a vendor, it is a particular > use-case (working with files) and thus should not go directly into the > global namespace. > > There is imho no reason to move `PHP\Reflection\Reflector` to > `Reflection\Reflector` just because we decided, for whatever reason, to > remove reflection from core and instead providing it via PECL. PHP would > still be the vendor of it. > > The misconception that I am seeing is, that the PHP namespace is bound > to PHP, which it isn't: it is the vendor namespace of the PHP Group. > > The PHP community at large has settled with this approach, and I believe > that it is a very good approach. It effectively avoids namespace > collisions and helps to identify the vendor of a particular implementation. > > Would love to hear what others think about this. > > -- > Richard "Fleshgrinder" Fussenegger >
If we were starting from scratch maybe we'd do as you are proposing. However, there is absolutely zero value in these specific things being namespaced *anywhere*: - Arrays - Reflection - Strings - IO We already have established conventions and prefixes around these. Moving them to a namespace has zero value. I'm not sure what logging you are talking about for PHP. That leaves UUID, which I am fine with having its own namespace if there are enough functions, constants, classes, etc to support it. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php