Version: 0.1
Date: 2008-03-06
-
Status: Work in progress
First Published at: none
This RFC discusses the transition to real namespaces for internal classes in e.g. ext/spl.
Currently internal classes are inconsistently named. Just take a look at SPL:
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
| Current name | New name |
| ArrayObject | Spl::Array::Object |
| SplFastArray | Spl::Array::Fast |
| 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::Glob |
| 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 |
| 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 |
| 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 |
| Current name | New name |
| SplFileInfo | Spl::File::Info |
| SplFileObject | Spl::File::Object |
| SplTempFileObject | Spl::File::TempFile |
| Current name | New name |
| SplObserver | Spl::Observer::Observer |
| SplSubject | Spl::Observer::Subject |
| Current name | New name |
| Countable | Spl::Countable |
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