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

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

作成日: 更新日:

基本的な使い方

『CALL_TOSTRING定数は、CachingIteratorクラスのインスタンスが文字列として扱われた際の挙動を制御するためのフラグとして使用される定数です。CachingIteratorは、内部に別のイテレータを保持し、次の要素が存在するかどうかを事前に確認できる機能を提供します。この定数をCachingIteratorのコンストラクタの第2引数に渡してオブジェクトを生成すると、そのオブジェクトが文字列コンテキストで使用された際に、内部で保持しているイテレータの現在の要素に対して__toString()メソッドが自動的に呼び出されます。例えば、echo文でCachingIteratorのインスタンスを直接出力しようとすると、現在の要素の文字列表現が得られます。このフラグを指定しない場合、同様の操作を行うとオブジェクトを文字列に変換できないというエラーが発生します。したがって、この定数は、CachingIteratorを介して取得できる現在の要素を、明示的にメソッドを呼び出すことなく手軽に文字列として扱いたい場合に設定します。

構文(syntax)

1<?php
2class SampleItem
3{
4    public function __construct(private string $value)
5    {
6    }
7
8    public function __toString(): string
9    {
10        return "Current item is: " . $this->value;
11    }
12}
13
14$items = [
15    new SampleItem('Apple'),
16    new SampleItem('Banana'),
17    new SampleItem('Cherry'),
18];
19
20$iterator = new CachingIterator(
21    new ArrayIterator($items),
22    CachingIterator::CALL_TOSTRING
23);
24
25foreach ($iterator as $item) {
26    // CachingIterator::CALL_TOSTRING フラグが設定されているため、
27    // $iterator 変数を文字列として扱うと、現在の要素 ($item) の
28    // __toString() メソッドが自動的に呼び出されます。
29    echo $iterator . PHP_EOL;
30}
31?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

int

CachingIterator::CALL_TOSTRING は、CachingIterator オブジェクトが __toString() メソッドの呼び出しを許可するかどうかを示す整数値を返します。

【PHP8.x】CALL_TOSTRING定数の使い方 | いっしー@Webエンジニア