rfc:backslashnamespaces

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
rfc:backslashnamespaces [2008/10/25 06:41] – add small codebase change to advantages of both removal and Stas's option cellogrfc:backslashnamespaces [2017/09/22 13:28] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Request for Comments: problems of namespaces and potential solutions ====== ====== Request for Comments: problems of namespaces and potential solutions ======
-  * Version: 1.0+  * Version: 1.1
   * Date: 2008-10-25   * Date: 2008-10-25
   * Author: Gregory Beaver <cellog@php.net>   * Author: Gregory Beaver <cellog@php.net>
Line 126: Line 126:
  
   * move all static method calls to -> syntax   * move all static method calls to -> syntax
-  * introduce E_DEPRECATED for :: calls that resolve to static method, remove in PHP 6+  * introduce E_STRICT (or E_DEPRECATEDfor :: calls that resolve to static method in PHP 6, but allow both syntaxes without error in PHP 5.3
  
 The second way is going to be a terrible headache for all OO authors, past and present, and will prevent migration to PHP 5.3 for those who are only looking for security fixes and performance improvements.  As such, it can be safely vetoed as impractical.  The next section assumes we are talking about Stas's original proposal, which is to allow this syntax: The second way is going to be a terrible headache for all OO authors, past and present, and will prevent migration to PHP 5.3 for those who are only looking for security fixes and performance improvements.  As such, it can be safely vetoed as impractical.  The next section assumes we are talking about Stas's original proposal, which is to allow this syntax:
Line 287: Line 287:
   * because \ is a single keystroke, it is possible to require \ prefix for all global functions/classes/constants, and conversion is minimally effortful (from personal experience trying to convert files to several namespace separators to see what it was like)   * because \ is a single keystroke, it is possible to require \ prefix for all global functions/classes/constants, and conversion is minimally effortful (from personal experience trying to convert files to several namespace separators to see what it was like)
   * code review ambiguities disappear permanently   * code review ambiguities disappear permanently
-  * name resolution order problems disappear if we decide that "foo/bar" or "foo::bar" is always prefixed with namespace name, and only short names like "bar()" or "new bar" are checked for both "nsname/bar()" and internal function "bar()" or "class nsname/bar" and internal class "bar" "/foo/bar" is used for global scoping.+  * name resolution order problems disappear if we decide that "foo\bar" or "foo::bar" is always prefixed with namespace name, and only short names like "bar()" or "new bar" are checked for both "nsname\bar()" and internal function "bar()" or "class nsname\bar" and internal class "bar" "\foo\bar" is used for global scoping.
   * code coverage of namespace-related code is so good, it is possible to be very confident of the correctness of the patch.   * code coverage of namespace-related code is so good, it is possible to be very confident of the correctness of the patch.
  
Line 312: Line 312:
 ===== Changelog ===== ===== Changelog =====
  
 + * 1.1: Correct mis-representation of Lukas's understanding of Classname->method()
  
rfc/backslashnamespaces.1224916886.txt.gz · Last modified: 2017/09/22 13:28 (external edit)