【PHP8.x】SplObjectStorage::current()メソッドの使い方
currentメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
currentメソッドは、SplObjectStorageオブジェクトが現在指し示しているオブジェクトを取得するメソッドです。SplObjectStorageは、複数のオブジェクトを格納し、それらをキーとして追加のデータを関連付けたり、オブジェクトの集合を管理したりするための特別なクラスです。このクラスは、内部にイテレータと呼ばれる仕組みを持っており、これによって格納されたオブジェクトを一つずつ順番にアクセスすることが可能です。currentメソッドは、このイテレータが現在どのオブジェクトを指しているかを確認し、そのオブジェクトを返します。
通常、SplObjectStorage内のオブジェクトをforeachループなどで繰り返し処理する際に、ループの各ステップで自動的にcurrentメソッドが呼び出され、その時点で処理対象となっているオブジェクトを取得します。また、rewind()メソッドでイテレータをコレクションの先頭に戻したり、next()メソッドで次のオブジェクトへ進めたりといった、イテレータの明示的な操作を行う際にも、現在の位置にあるオブジェクトの内容を取得するために利用されます。
このメソッドは、SplObjectStorageに格納されているオブジェクトそのものを返します。もしイテレータが有効な位置にない場合、例えばSplObjectStorageが空であるか、イテレータがコレクションの末尾を超えた位置にある場合は、nullが返されることがあります。SplObjectStorageに保存された各オブジェクトを順番に処理し、それぞれに対して特定の操作を実行したい場合に、currentメソッドは欠かせない機能を提供します。
構文(syntax)
1<?php 2$storage = new SplObjectStorage(); 3$object1 = new stdClass(); 4$object2 = new stdClass(); 5 6$storage->attach($object1); 7$storage->attach($object2); 8 9$storage->rewind(); 10// $storage->current() は現在 $object1 を返す 11$currentObject = $storage->current(); 12 13$storage->next(); 14// $storage->current() は現在 $object2 を返す 15$nextCurrentObject = $storage->current(); 16?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
mixed
SplObjectStorage の現在の要素の値を返します。
SplObjectStorage が空の場合は、null を返します。