Переход к 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!!!! :-)';