Приднестровская поддержка XOOPS
Для вывода объекта в виде строки предусмотрен еще один магический метод: __toString().
Попытки вывести объект в виде строки, минуя метод __toString(), приведут
к возникновению фатальной ошибки. Попытаемся, например, использовать команду echo для вывода объекта без привлечения магического метода.
<?php
class MyClass
{
public $prop1 = "Это свойство класса!";
public function __construct()
{
echo 'Класс "', __CLASS__, '" инициирован!<br />';
}
public function __destruct()
{
echo 'The class "', __CLASS__, '" уничтожен.<br />';
}
public function setProperty($newval)
{
$this->prop1 = $newval;
}
public function getProperty()
{
return $this->prop1 . "<br />";
}
}
// Создать новый объект
$obj = new MyClass;
// Вывести объект в виде строки
echo $obj;
// Уничтожить объект
unset($obj);
// Вывести сообщение в конце файла
echo "Конец файла.<br />";
?>
Результат работы этого сценария будет следующим.
Класс "MyClass" инициирован!
Catchable fatal error: Object of class MyClass could not be converted to string in F:\xampp\htdocs\testing\test.php on line 32
Чтобы избежать этой ошибки, добавьте в сценарий метод __toString().
<?php
class MyClass
{
public $prop1 = "Это свойство класса!";
public function __construct()
{
echo 'Класс "', __CLASS__, '" инициирован!<br />';
}
public function __destruct()
{
echo 'Класс "', __CLASS__, '" уничтожен.<br />';
}
public function __toString()
{
echo "Используем метод toString: ";
return $this->getProperty();
}
public function setProperty($newval)
{
$this->prop1 = $newval;
}
public function getProperty()
{
return $this->prop1 . "<br />";
}
}
// Создать новый объект
$obj = new MyClass;
// Вывести объект в виде строки
echo $obj;
// Уничтожить объект
unset($obj);
// Вывести сообщение в конце файла
echo "Конец файла.<br />";
?>
В этом случае при попытке преобразовать объект в строку будет вызван метод getProperty().
Перезагрузив тестовый сценарий в браузере, вы получите следующий результат.
Отправитель | Нити |
---|
13 пользователь(ей) активно (5 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 13 далее... |