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

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

作成日: 更新日:

基本的な使い方

『TOSTRING_USE_INNER定数は、CachingIteratorクラスのオブジェクトが文字列として扱われた際の動作を制御するために使用される定数です。CachingIteratorクラスは、配列などの繰り返し可能なデータを扱う別のイテレータを内部に保持し、その動作を拡張する機能を提供します。このTOSTRING_USE_INNER定数を、CachingIteratorオブジェクトを生成する際のフラグとして指定すると、そのオブジェクトを文字列に変換しようとした場合(例えばechoで出力する際など)に、内部で保持している元のイテレータオブジェクト自体の__toString()メソッドが呼び出されます。その結果として、元のイテレータが持つ固有の文字列表現が返されます。これは、イテレータが指している現在の「要素」の値を文字列として返すTOSTRING_USE_CURRENT定数とは異なる動作です。この機能により、CachingIteratorでラップした場合でも、元のオブジェクトが定義している文字列表現をそのまま利用したいという特定の要件を満たすことができます。

構文(syntax)

1<?php
2
3$array = ['Apple', 'Banana', 'Cherry'];
4$iterator = new ArrayIterator($array);
5
6$cachingIterator = new CachingIterator(
7    $iterator,
8    CachingIterator::TOSTRING_USE_INNER
9);
10
11foreach ($cachingIterator as $value) {
12    echo $cachingIterator . PHP_EOL;
13}
14
15?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

CachingIterator::TOSTRING_USE_INNER は、CachingIterator オブジェクトを文字列として変換する際に、内部のイテレータの文字列表現も含めるかどうかを指定するための整数定数です。この定数を CachingIterator::TOSTRING_USE_INNER に設定すると、内部イテレータの情報も出力に含まれます。