Переход к PHP5 - Метод __toString()

ОГЛАВЛЕНИЕ

Метод __toString()

Когда переменная-объект преобразуется к строке, в результате возвращается строка "Object id #n", где n - номер объекта в глобальной таблице объектов. Если понадобится (пусть и крайне редко), этот механизм можно изменить, создав у класса метод __toString(), возвращающий некоторое строковое представление текущего объекта.

Хотя PHP5 beta 3 этот алгоримт проработан не полностью (__toString() срабатывает только во время использования указателя на объект в операторе print), это открывает интересные перспективы. Например, следующий код представляет собой вариацию на тему типизации PHP:

class Integer {
private
$value;
function
__construct($val) {
$this->value = $val;
}
function
__toString() {
return (string)(
$this->value);
}
}

$i = new Integer(10);
/**
Теоритически, $i при преобразовании к строке должно дать "10",
и, поскольку число 10 сравнивается со строкой, оно тоже должно
быть приведенно к строке. Получится "10" == "10". На практике, в
этом случае преобразование $i к строке осуществляется по варианту
PHP4 (т.е. в результате получаем строку "Object").
*/

if (10 == $i)
echo
'10!!!! :-)';