はじめに
PHPには、配列や例外処理を便利に扱える「道具箱」が標準で用意されています。
それが Standard PHP Library(SPL) です。
「配列で十分じゃないの?」と思う方もいるかもしれませんが、スタックやキューなどのデータ構造や、ディレクトリの走査、例外の分類など、実はSPLを知っているだけでコードがスッキリ書ける場面がたくさんあります。
この記事では、SPLの概要と、実際に触りながら理解できる学習ステップを紹介します。
目次
SPLとは?
- HPに標準で組み込まれているライブラリ集
- 追加インストール不要
- よくあるデータ構造・反復処理・例外処理を便利に扱える
大きく分けると以下のカテゴリがあります:
- データ構造(Stack, Queue, Heap, FixedArray)
- イテレータ(Iterator, DirectoryIterator, RecursiveIterator)
- 例外クラス(RuntimeException, LogicException)
- オブジェクト操作(SplObjectStorage など)
データ構造から始めよう
SplStack(スタック:後入れ先出し)
SplStack(スタック:後入れ先出し)サンプルコード
$stack = new SplStack();
$stack->push("A");
$stack->push("B");
echo $stack->pop(); // B
SplQueue(キュー:先入れ先出し)サンプルコード
$queue = new SplQueue();
$queue->enqueue("Task1");
$queue->enqueue("Task2");
echo $queue->dequeue(); // Task1
👉 配列でもできるが、用途が明確になり可読性が上がる。
イテレータで反復処理を効率化
DirectoryIterator(ディレクトリの中身をforeachで扱える)
DirectoryIteratorサンプルコード
$dir = new DirectoryIterator(".");
foreach ($dir as $file) {
if ($file->isFile()) {
echo $file->getFilename() . PHP_EOL;
}
}
👉scandir()
より柔軟でオブジェクト指向的。
例外クラスの整理
RuntimeException
… 実行中の問題(例: ファイルが見つからない)LogicException
… コードの書き方の誤り
👉 例外クラスを分けると、エラー処理がきれいになる。
学習ステップのおすすめ順序
- 全体像を知る(カテゴリを把握)
- データ構造で遊ぶ(Stack/Queue/Heap)
- Iteratorを体験(DirectoryIteratorなど)
- 例外クラスを知る
- フレームワークやOSSで遭遇したら調べる
まとめ
- SPL = PHP標準の「便利な道具箱」
- 配列や例外だけでは表現しにくい処理をスッキリ書ける
- 特に Stack / Queue / Iterator から触るのがおすすめ
- 上級者だけでなく、日常的にPHPを書く人にもメリット大