Hi internals, > Because the naming choice for new datastructures is a question that has been > asked many times, > I plan to create another straw poll (Single transferrable vote) on > wiki.php.net to gather feedback on the naming pattern to use for future > additions of datastructures to the SPL, > with the arguments for and against the naming pattern. > > https://wiki.php.net/rfc/namespaces_in_bundled_extensions recently passed. > It permits using the same namespace that is already used in an extension, > but offers guidance in choosing namespace names and allows for using > namespaces in new categories of functionality. > > The planned options are: > > 1. `\Deque`, the name currently used in the RFC/implementation. See > https://wiki.php.net/rfc/deque#global_namespace > > This was my preference because it was short, making it easy to remember > and convenient to use. > 2. `\SplDeque`, similar to datastructures added to the `Spl` in PHP 5.3. > > (I don't prefer that name because `SplDoublyLinkedList`, `SplStack`, and > `SplQueue` are subclasses of a doubly linked list with poor performance, > and this name would easily get confused with them. Also, historically, > none of the functionality with that naming pattern has been final. > However, good documentation (e.g. suggesting `*Deque` instead where > possible in the manual) would make that less of an issue.) > > See https://wiki.php.net/rfc/deque#lack_of_name_prefix (and arguments for > https://externals.io/message/116100#116111) > 3. `\Collection\Deque` - the singular form is proposed because this might > grow long-term to contain not just collections, > but also functionality related to collections in the future(e.g. helper > classes for building classes > (e.g. `ImmutableSequenceBuilder` for building an `ImmutableSequence`), > global functions, traits/interfaces, > collections of static methods, etc. > (especially since > https://wiki.php.net/rfc/namespaces_in_bundled_extensions prevents more than > one level of namespaces) > > Additionally, all existing extension names in php-src are singular, not > plural. https://github.com/php/php-src/tree/master/ext > (Except for `sockets`, but that defines `socket_*` and `class Socket` and > I'd assume it would be named `Socket\` anyway, the rfc didn't say exactly > match?) > > So the namespace's contents might not just be `Collections`, but rather > all functionality related to a `Collection`) > Also, the examples in the "namespaces in bundled extension" RFC were all > singular > > > For example, the `array_is_list()` function added in PHP 8.1 should > indeed be called `array_is_list()` > > and should not be introduced as `Array\is_list()` or similar. > > Unless and until existing `array_*()` functions are aliased under an > Array\* namespace, > > new additions should continue to be of the form `array_*()` to maintain > horizontal consistency. > > **NOTE: This later was changed to `Collections\\`, I misread the > namespaces in bundled extensions RFC, and sub-namespaces are allowed** > > See https://wiki.php.net/rfc/deque#global_namespace (and > https://externals.io/message/116100#116111) > > Also, straw polls for other categories of functionality > (https://wiki.php.net/rfc/cachediterable_straw_poll#namespace_choices) > had shown interest of around half of voters in adopting namespaces, > there was disagreement about the best namespace to use (e.g. none that > were preferred to the global namespace), > making me hesitant to propose namespaces in any RFC. For an ordinary > collection datastructure, the situation may be different. > > While there is considerable division in whether or not members of internals > want to adopt namespaces, > I hope that the final outcome of the poll will be accepted by members of > internals > as what the representative of the majority of the members of internals > (from diverse backgrounds such as contributors/leaders of userland > applications/frameworks/composer libraries written in PHP, > documentation contributors, PECL authors, php-src maintainers, etc. (all of > which I expect are also end users of php)) > want to use as a naming choice in future datastructure additions to PHP. > (and I hope there is a clear majority) > > ----- > > Are there any other suggestions to consider for namespaces to add to the > straw poll? > > Several suggestions that have been brought up in the past are forbidden by > the accepted policy RFC > (https://wiki.php.net/rfc/namespaces_in_bundled_extensions) > and can't be used in an RFC. > > - `Spl\`, `Core\`, and `Standard\` are forbidden: "Because these extensions > combine a lot of unrelated or only tangentially related functionality, > symbols should not be namespaced under the `Core`, `Standard` or `Spl` > namespaces. > Instead, these extensions should be considered as a collection of different > components, and should be namespaced according to these." > - More than one namespace component (`A\B\`) is forbidden > - Namespace names should follow CamelCase.
The straw poll https://wiki.php.net/rfc/deque_straw_poll has been written, and voting on the straw poll will be started on Wednesday, January 12th. The naming option was also changed to `Collections\` on reflection, as proposed in https://externals.io/message/116100#116119 Are there any arguments for/against the naming choices that you'd like to see in the straw poll? Thanks, Tyson -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php