rfc:namespaces-for-internal-classes
                This is an old revision of the document!
Request for Comments: How to write RFCs
- Version: 1.0
- 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
| Current name | New name | 
|---|---|
| AppendIterator | Spl::Iterator::Append | 
| ArrayIterator | Spl::Iterator::Array | 
| ArrayObject | Spl::Array::Object | 
| 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 | 
| SplFastArray | Spl::Array::Fast | 
| BadFunctionCallException | Spl::Exception::BadFunctionCall | 
| BadMethodCallException | Spl::Exception::BadMethodCall | 
| CachingIterator | Spl::Iterator::Caching | 
| Countable | Spl::Countable | 
| DirectoryIterator | Spl::Iterator::Directory | 
| DomainException | Spl::Exception::Domain | 
| EmptyIterator | Spl::Iterator::Empty | 
| FilesystemIterator | Spl::Iterator::Filesystem | 
| FilterIterator | Spl::Iterator::Filter | 
| GlobIterator | Spl::Iterator::Filter | 
| InfiniteIterator | Spl::Iterator::Infinite | 
| InvalidArgumentException | Spl::Exception::InvalidArgument | 
| IteratorIterator | Spl::Iterator::Iterator | 
| LengthException | Spl::Exception::Length | 
| LimitIterator | Spl::Iterator::Limit | 
| LogicException | Spl::Exception::Logic | 
| NoRewindIterator | Spl::Iterator::NoRewind | 
| OuterIterator | Spl::Iterator::Outer | 
| OutOfBoundsException | Spl::Exception::OutOfBounds | 
| OutOfRangeException | Spl::Exception::OutOfRange | 
| OverflowException | Spl::Exception::Overflow | 
| ParentIterator | Spl::iterator::Parent | 
| RangeException | Spl::Exception::Range | 
| 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 | 
| RegexIterator | Spl::Iterator::Regex | 
| RuntimeException | Spl::Exception::Runtime | 
| SeekableIterator | Spl::Iterator::Seekable | 
| SimpleXMLIterator | Spl::Iterator::SimpleXML | 
| SplFileInfo | Spl::File::Info | 
| SplFileObject | Spl::File::Object | 
| SplObjectStorage | Spl::List::ObjectStorage | 
| SplObserver | Spl::Observer::Observer | 
| SplSubject | Spl::Observer::Subject | 
| SplTempFileObject | Spl::File::TempFile | 
| UnderflowException | Spl::Exception::UnderflowException | 
| UnexpectedValueException | Spl::Exception::UnexpectedValue | 
rfc/namespaces-for-internal-classes.1213728611.txt.gz · Last modified:  (external edit)