【PHP8.x】__toStringメソッドの使い方

__toStringメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『__toStringメソッドは、RecursiveCachingIteratorクラスのインスタンスが文字列として評価される際に、イテレータの現在の要素を文字列に変換して返す処理を実行するメソッドです。このメソッドはPHPのマジックメソッドの一つであり、オブジェクトをechoで出力したり、文字列と連結したりするような、文字列が期待される文脈で使用された場合に自動的に呼び出されます。具体的には、内部で保持しているイテレータが現在指し示している要素を取得し、その値を文字列として返します。もし現在の要素が__toStringメソッドを持つオブジェクトである場合は、そのオブジェクトの__toStringメソッドが呼び出された結果が返されます。一方、要素が数値や文字列などのスカラー値である場合は、単純に文字列にキャストされた値が返ります。このメソッドの動作は、RecursiveCachingIterator::current()メソッドを呼び出し、その戻り値を文字列に変換する処理と等価です。この機能により、イテレータの現在位置にある値を簡単に文字列として取得し、利用することができます。

構文(syntax)

1<?php
2
3$fruits = ['apple', 'banana', 'cherry'];
4
5// ArrayIteratorを作成します
6$arrayIterator = new ArrayIterator($fruits);
7
8// RecursiveCachingIteratorでラップします
9// 第2引数にフラグを指定すると、オブジェクトが文字列として
10// 扱われた際に __toString() が呼び出されるようになります。
11$iterator = new RecursiveCachingIterator($arrayIterator, RecursiveCachingIterator::CALL_TOSTRING);
12
13// イテレータをループ処理します
14foreach ($iterator as $fruit) {
15    // $iterator変数を直接echoすると、__toString()メソッドが呼び出され、
16    // 現在の要素の値 (この場合は$fruitと同じ値) が文字列として返されます。
17    echo $iterator . PHP_EOL;
18}
19
20?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

string

このメソッドは、イテレータの内容を文字列として返します。

【PHP8.x】__toStringメソッドの使い方 | いっしー@Webエンジニア