【PHP8.x】TOSTRING_USE_CURRENT定数の使い方

TOSTRING_USE_CURRENT定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『TOSTRING_USE_CURRENT定数は、RecursiveCachingIteratorクラスのインスタンスが文字列として扱われる際の動作を制御するためのモードを表す定数です。この定数は、RecursiveCachingIteratorのコンストラクタの第2引数である$flagsに渡して使用します。このフラグを設定して生成されたイテレータオブジェクトをecho文などで文字列として出力しようとすると、__toString()メソッドが内部的に呼び出されます。その際、イテレータが現在指し示している要素の値、すなわちcurrent()メソッドが返す値を文字列に変換した結果を返すように動作が変更されます。デフォルトの動作では要素オブジェクト自体の文字列表現を返しますが、この定数を使用することで、要素の「値」そのものを文字列として手軽に取得できます。イテレータを文字列化する際に、要素のキーやオブジェクト全体ではなく、現在の要素の値を取得したい場合にこの定数を指定します。

構文(syntax)

1<?php
2
3$data = new RecursiveArrayIterator(['Apple', 'Banana', ['Cherry', 'Durian']]);
4
5$iterator = new RecursiveIteratorIterator(
6    new RecursiveCachingIterator(
7        $data,
8        RecursiveCachingIterator::TOSTRING_USE_CURRENT
9    )
10);
11
12foreach ($iterator as $value) {
13    // インスタンスを文字列として出力すると、フラグにより現在の要素が返されます。
14    echo $iterator->getInnerIterator() . PHP_EOL;
15}

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

RecursiveCachingIterator::TOSTRING_USE_CURRENT は、イテレータの現在の要素を文字列として取得する際に、その操作を有効にするための定数であり、整数値 2 を返します。