rfc:any_all_on_iterable_straw_poll_namespace

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
rfc:any_all_on_iterable_straw_poll_namespace [2021/01/17 14:21] tandrerfc:any_all_on_iterable_straw_poll_namespace [2021/01/17 14:43] tandre
Line 1: Line 1:
 ====== Straw poll: Using namespaces for *any() and *all() on iterables ====== ====== Straw poll: Using namespaces for *any() and *all() on iterables ======
-  * Version: 0.1+  * Version: 0.2
   * Date: 2021-01-05   * Date: 2021-01-05
   * Author: Tyson Andre, tandre@php.net   * Author: Tyson Andre, tandre@php.net
Line 25: Line 25:
 ===== Discussion ===== ===== Discussion =====
  
-==== Arguments for namespaces in general ====+==== Arguments for voting again on namespaces ====
  
 https://externals.io/message/112558 https://externals.io/message/112558
Line 128: Line 128:
  
 Mark Randall Mark Randall
 +</blockquote>
 +
 +From Nikita Popov: https://externals.io/message/112558#112780
 +
 +<blockquote>
 +Using just the SPL namespace (that is, SPL\any) makes the SPL namespace a
 +dumping ground for everything, as you said. Once you introduce an
 +additional meaningful namespace in the form of SPL\iterable\any, you are
 +better off either dropping the SPL part and arriving at iterable\any, or
 +replacing SPL with something more sensible and arriving at PHP\iterable\any.
 </blockquote> </blockquote>
  
Line 153: Line 163:
  
 I've also realized that ''use prefix\iterable'' would be mildly inconvenient for users of PHP and for tooling (refactoring tools, IDEs, etc) for PHP, I've also realized that ''use prefix\iterable'' would be mildly inconvenient for users of PHP and for tooling (refactoring tools, IDEs, etc) for PHP,
-but still include it as an option because it's unlikely to be a problem in practice  and the non-namespaced prefix iterable_ was preferred in the previous poll.+but still include it as an option because it'**unlikely to be a problem in practice  and the non-namespaced prefix iterable_ was preferred in the previous poll.**
  
 <code php> <code php>
Line 159: Line 169:
 php > \iterable\my_any(); // can be called with the fully qualified name php > \iterable\my_any(); // can be called with the fully qualified name
 in my_any() polyfill in my_any() polyfill
-php > namespace X { use iterable\my_any; my_any(); /* using individual functions works */ }+php > namespace X { use iterable\my_any; my_any(); /* using individual functions works and is how namespaced functions are often used */ 
 +in my_any() polyfill 
 +php > namespace { iterable\my_any(); }
 in my_any() polyfill in my_any() polyfill
-php > namespace W { echo iterable::class; } 
-W\iterable 
  
 +
 +
 +php > namespace W { echo iterable::class; /* Edge cases that should not be a problem in practice, but mentioned for completeness */ }
 +W\iterable
 php > namespace X { use iterable; } php > namespace X { use iterable; }
  
 Fatal error: Cannot use iterable as iterable because 'iterable' is a special class name in php shell code on line 1 Fatal error: Cannot use iterable as iterable because 'iterable' is a special class name in php shell code on line 1
 +php > namespace X { use PHP\iterable; }
 +
 +Fatal error: Cannot use PHP\iterable as iterable because 'iterable' is a special class name in php shell code on line 1
 +
 php > namespace X { use iterable as iter; iter\my_any(); } php > namespace X { use iterable as iter; iter\my_any(); }
 in my_any() polyfill in my_any() polyfill
Line 180: Line 198:
  
 **Clicking on vote will only submit your vote for the above question, not for all of them.** You may want to write down your choices to avoid losing track of them. To quickly return to the vote section, click on "Vote" in the Table of Contents on the right. **Clicking on vote will only submit your vote for the above question, not for all of them.** You may want to write down your choices to avoid losing track of them. To quickly return to the vote section, click on "Vote" in the Table of Contents on the right.
 +
 +  * no namespace: iterable_any()/iterable_all()
 +  * iter\ (conflicts with [[https://github.com/nikic/iter|nikic/iter]] but was among Nikita's suggestions)
 +  * iterable\ (see [[any_all_on_iterable_straw_poll_namespace#arguments_foragainst_iterable_in_namespace|section on iterable\ ]] , also suggested by Nikita)
 +  * PHP\ (see [[#arguments_for_php|Arguments for PHP\]])
 +  * PHP\iter\
 +  * PHP\iterable\ (see [[#arguments_for_php|Arguments for PHP\]])
 +  * Ext\Spl, as suggested in https://wiki.php.net/rfc/php_namespace_policy
 +  * Spl\ (see [[any_all_on_iterable_straw_poll_namespace#arguments_for_spl|Arguments for Spl\ ]] - suggested by Levi Morrison)
 +  * Spl\iter\
 +  * Spl\iterable\ 
 +
  
 First choice: First choice:
Line 395: Line 425:
   - https://externals.io/message/112558 "Straw poll: Naming for `*any()` and `*all()` on iterables"   - https://externals.io/message/112558 "Straw poll: Naming for `*any()` and `*all()` on iterables"
   - https://github.com/php/php-src/pull/6053   - https://github.com/php/php-src/pull/6053
 +
 +===== Changelog =====
 +
  
rfc/any_all_on_iterable_straw_poll_namespace.txt · Last modified: 2021/02/03 00:30 by tandre