rfc:namespaces-for-internal-classes

Differences

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

Link to this comparison view

rfc:namespaces-for-internal-classes [2008/06/17 19:24]
lstrojny Better wording
rfc:namespaces-for-internal-classes [2017/09/22 13:28]
Line 1: Line 1:
-====== Request for Comments: How to write RFCs ====== 
-  * Version: 0.1 
-  * Date: 2008-03-06 
-  * Author: Lars Strojny <lstrojny@php.net> 
-  * Status: Work in progress 
-  * First Published at: none 
  
-===== Introduction ===== 
- 
-This RFC discusses the transition to real namespaces for internal classes in e.g. ext/spl. 
- 
-==== Why should we use namespaces for internal classes? ==== 
- 
-Currently internal classes are inconsistently named. Just take a look at SPL: 
-  * RecursiveIterator 
-  * RecursiveIteratorIterator 
-  * RecursiveRegexIterator 
-  * RegexIterator 
-  * RuntimeException 
-  * SeekableIterator 
-  * SimpleXMLIterator 
-  * SplFileInfo 
-  * SplFileObject 
-  * SplObjectStorage 
-  * SplObserver 
- 
-Some of the classes in ext/spl are prefixed with "Spl", some are not. To avoid naming collisions and as a structural element, namespaces were introduced in PHP 5.3. This gives us a chance to move all the Spl-classes in appropriate namespaces. Take a look at the following transitions: 
- 
-  * RecursiveIterator: Spl::Iterator::Recursive 
-  * RecursiveIteratorIterator: Spl::Iterator::Recursive::Iterator 
-  * RecursiveRegexIterator: Spl::Iterator::Recursive::RegexIterator 
-  * RegexIterator: Spl::Iterator::Regex 
-  * RuntimeException: Spl::Exception::Runtime 
-  * SimpleXMLIterator: Spl::Iterator::SimpleXML 
-  * SplObserver: Spl::Observer::Observer 
-  * SplSubject: Spl::Observer::Subject 
-  * SplFileInfo: Spl::File::Info 
-  * SplFileObject: Spl::File::Object 
-  * SeekableIterator: Spl::Iterator::Seekable 
- 
-===== List of renamed classes ===== 
-==== Array ==== 
-^ Current name                    ^ New name ^ 
-| ArrayObject                     | Spl::Array::Object | 
-| SplFastArray                    | Spl::Array::Fast | 
- 
-==== Iterators ==== 
-^ Current name                    ^ New name ^ 
-| AppendIterator                  | Spl::Iterator::Append | 
-| ArrayIterator                   | Spl::Iterator::Array | 
-| CachingIterator                 | Spl::Iterator::Caching | 
-| DirectoryIterator               | Spl::Iterator::Directory | 
-| EmptyIterator                   | Spl::Iterator::Empty | 
-| FilesystemIterator              | Spl::Iterator::Filesystem | 
-| FilterIterator                  | Spl::Iterator::Filter | 
-| GlobIterator                    | Spl::Iterator::Filter | 
-| InfiniteIterator                | Spl::Iterator::Infinite | 
-| IteratorIterator                | Spl::Iterator::Iterator | 
-| LimitIterator                   | Spl::Iterator::Limit | 
-| RegexIterator                   | Spl::Iterator::Regex | 
-| SeekableIterator                | Spl::Iterator::Seekable | 
-| SimpleXMLIterator               | Spl::Iterator::SimpleXML | 
-| ParentIterator                  | Spl::iterator::Parent | 
-| NoRewindIterator                | Spl::Iterator::NoRewind | 
-| OuterIterator                   | Spl::Iterator::Outer | 
-| RecursiveArrayIterator          | Spl::Iterator::Recursive::Array | 
-| RecursiveCachingIterator        | Spl::iterator::Recursive::Caching | 
-| RecursiveDirectoryIterator      | Spl::Iterator::Recursive::Directory | 
-| RecursiveFilterIterator         | Spl::Iterator::Recursive::Filter | 
-| RecursiveIterator               | Spl::Iterator::Recursive::Recursive | 
-| RecursiveIteratorIterator       | Spl::Iterator::Recursive::Iterator | 
-| RecursiveRegexIterator          | Spl::Iterator::Recursive::Regex | 
- 
-==== Lists ==== 
-^ Current name                    ^ New name ^ 
-| SplDoublyLinkedList             | Spl::List::DoublyLinked | 
-| SplQueue                        | Spl::List::Queue | 
-| SplStack                        | Spl::List::Stack | 
-| SplHeap                         | Spl::List::Heap | 
-| SplMinHeap                      | Spl::List::MinHeap | 
-| SplMaxHeap                      | Spl::List::MaxHeap | 
-| SplPriorityQueue                | Spl::List::PriorityQueue | 
-| SplObjectStorage                | Spl::List::ObjectStorage | 
- 
-==== Exceptions ==== 
-^ Current name                    ^ New name ^ 
-| BadFunctionCallException        | Spl::Exception::BadFunctionCall | 
-| BadMethodCallException          | Spl::Exception::BadMethodCall | 
-| DomainException                 | Spl::Exception::Domain | 
-| InvalidArgumentException        | Spl::Exception::InvalidArgument | 
-| LengthException                 | Spl::Exception::Length | 
-| RangeException                  | Spl::Exception::Range | 
-| RuntimeException                | Spl::Exception::Runtime | 
-| LogicException                  | Spl::Exception::Logic | 
-| OutOfBoundsException            | Spl::Exception::OutOfBounds | 
-| OutOfRangeException             | Spl::Exception::OutOfRange | 
-| OverflowException               | Spl::Exception::Overflow | 
-| UnderflowException              | Spl::Exception::UnderflowException | 
-| UnexpectedValueException        | Spl::Exception::UnexpectedValue | 
- 
-==== File related stuff ==== 
-^ Current name                    ^ New name ^ 
-| SplFileInfo                     | Spl::File::Info | 
-| SplFileObject                   | Spl::File::Object | 
-| SplTempFileObject               | Spl::File::TempFile | 
- 
-==== Observer interfaces ==== 
-^ Current name                    ^ New name ^ 
-| SplObserver                     | Spl::Observer::Observer | 
-| SplSubject                      | Spl::Observer::Subject | 
- 
-==== Misc ==== 
-^ Current name                    ^ New name ^ 
-| Countable                       | Spl::Countable | 
- 
-===== Backwards compatibility and other constraints ====== 
-  * The current names are removed in PHP 6.0 
-  * The current names are available as deprecated aliases until their removal 
-  * The documentation will be updated to advise the usage of the new naming scheme 
-  * The current classes will trigger an E_DEPRECATED warning hinting the new name 
rfc/namespaces-for-internal-classes.txt · Last modified: 2017/09/22 13:28 (external edit)