Допустим, мы хотим вывести значение объекта таким методом:
class A { } $o = new A(); echo $o;//echo всегда конвертирует значение в строку
Ничего не получится, выскочит ошибка (объект класса невозможно конвертировать в строку). Хотя в старых версиях php этот код работал. Просто удобно, кратко и понятно.
Но для этих целей есть метод __toString. И если у нас идет попытка конвертации объекта в строку (используется конструкция echo), то перед тем как выдать ошибку, php ищет метод __toString. Если он существует, то запускается автоматом. Пример:
class MyClass { function __toString(){ return 'Вызван метод __toString()';} } $obj = new MyClass(); // Вызван метод __toString() echo $obj;