PHP SPL (Standard PHP Library)
The Standard PHP Library (SPL) is a collection of interfaces and classes that are meant to solve common problems. It provides a set of standard data structures, iterators, and other tools.
SPL is a core part of PHP and is enabled by default.
Data Structures
SPL provides a set of object-oriented data structures that can be used to store and manipulate data. These are often more efficient and powerful than simple PHP arrays.
SplDoublyLinkedList: A doubly linked list.SplStack: A stack (LIFO - Last In, First Out).SplQueue: A queue (FIFO - First In, First Out).SplHeap,SplMinHeap,SplMaxHeap: Different types of heaps.SplPriorityQueue: A queue that orders elements by priority.SplFixedArray: A fixed-size array, which can be faster than a regular PHP array in some cases.SplObjectStorage: A map that uses objects as keys.
<?php
$list = new SplDoublyLinkedList();
$list->push('a');
$list->push('b');
$list->push('c');
$list->rewind();
while($list->valid()){
echo $list->current() . "\n";
$list->next();
}
?>
Iterators
SPL provides a set of iterators that can be used to traverse over data structures. Many of the built-in SPL data structures, as well as regular PHP arrays, can be used with these iterators.
ArrayIterator: Iterates over an array.AppendIterator: Iterates over several iterators one after another.CachingIterator: Caches the current and next elements of an iterator.FilterIterator: Filters an iterator based on a predicate.LimitIterator: Limits the number of items in an iterator.RecursiveIteratorIterator: Used to iterate over a recursive iterator.
Interfaces
SPL also defines a set of interfaces that allow your own classes to behave like data structures.
Traversable: The base interface for all traversable classes. You can't implement this directly; instead, you implementIteratororIteratorAggregate.Iterator: For classes that can be iterated over. Requires methods likecurrent(),key(),next(),rewind(), andvalid().IteratorAggregate: A simpler alternative toIterator. Requires a single methodgetIterator()that returns anIterator.Countable: For classes that can be counted with thecount()function.ArrayAccess: Allows an object to be accessed like an array.
Autoloading
Before Composer became the standard, SPL provided the spl_autoload_register() function, which is still the foundation of modern autoloading in PHP. It allows you to register multiple functions that PHP will call when it tries to use a class that hasn't been defined yet.