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 ?
ArrayIterator ?
ArrayObject ?
SplDoublyLinkedList ?
SplQueue ?
SplStack ?
SplHeap ?
SplMinHeap ?
SplMaxHeap ?
SplPriorityQueue ?
SplFastArray ?
BadFunctionCallException ?
BadMethodCallException ?
CachingIterator ?
Countable ?
DirectoryIterator ?
DomainException ?
EmptyIterator ?
FilesystemIterator ?
FilterIterator ?
GlobIterator ?
InfiniteIterator ?
InvalidArgumentException ?
IteratorIterator ?
LengthException ?
LimitIterator ?
LogicException ?
NoRewindIterator ?
OuterIterator ?
OutOfBoundsException ?
OutOfRangeException ?
OverflowException ?
ParentIterator ?
RangeException ?
RecursiveArrayIterator ?
RecursiveCachingIterator ?
RecursiveDirectoryIterator ?
RecursiveFilterIterator ?
RecursiveIterator ?
RecursiveIteratorIterator ?
RecursiveRegexIterator ?
RegexIterator ?
RuntimeException ?
SeekableIterator ?
SimpleXMLIterator ?
SplFileInfo ?
SplFileObject ?
SplObjectStorage ?
SplObserver ?
SplSubject ?
SplTempFileObject ?
UnderflowException ?
UnexpectedValueException ?
rfc/namespaces-for-internal-classes.1213728194.txt.gz · Last modified: 2017/09/22 13:28 (external edit)