Специальный метод "__toString()" даёт возможность интерполировать, то есть подставлять объект в строку. Для того чтобы подставить значение переменных необходимо строку поместить в двойные кавычки. Если строка использует одинарные кавычки, то значение переменной не интерполируется.

Интерполяция переменной:


$_MyString = "1 строка";
echo "_MyString = $_MyString"; # _MyString = 1 строка ;
echo '_MyString = $_MyString'; # _MyString = $_MyString ;

Этого результата можно добиться и от объекта, если реализовать в его классе метод "__toString()", который преобразует объект в строку.

Приведём пример, в котором будет использоваться специальный метод "__toString":


class myToString {

	public $_string;
	public $_tostring;

	public function __construct ($_string, $_tostring) {
		$this->_string = $_string;
		$this->_tostring = $_tostring;
	}

	public function __toString() {
		/* Метод "__toString()" выводит результат при использовании конструкции "return", а не "echo". */
		return "$this->_string - $this->_tostring";
	}

}

$_to_my_class = new myToString("Интерполяция", "Объекта");
echo "$_to_my_class";

В данном примере приводится принцип интерполяции объекта класса "myToString", при этом вместо объекта "$_to_my_class" подставляется фраза "Интерполяция - Объекта". Сам метод "__toString" вызывается автоматически в любом месте контекста, где ожидается строка, например результат работы следующего примера полностью аналогичен тому, что был получен после работы скрипта из предыдущего примера. Вызов "__toString()" в строковом контексте:


$_to_my_class = new myToString("метода __toString()", "в");
$_string = "Вызов ";
$_string .= $_to_my_class;
$_string .= " строковом контексте.";
echo $_string;

Такой способ вызова объекта в строковом констексте возможен, только если его класс содержит метод "__toString()", в ином случае такая реализация объекта в строке будет заканчиваться ошибкой.

Приведём ещё один пример метода "__toString()", реализуем класс - обёртку "myBreak", который будет выполнять те же действия что и функция "implode()". Конструктор будет принимать два параметра: массив "$_myArray" и разделитель "$_mySeparator". Метод "__toString()" будет объединять элементы массива "$_myArray" в строку, отделяя их друг от друга разделителем "$_mySeparator".


class myBreak {

	public function __construct ($_mySeparator, $_myArray) {

		$this->_myArray = $_myArray;
		$this->_mySeparator = $_mySeparator;

		$this->_myIterator = $_myIterator;
		$this->_myString = $_myString;
		$this->_myValue = $_myValue;

	}

	public function __toString() {

		$this->_myString = "";

		# Рекурсивный обход массива посредством библиотеки PHP "SPL".
		$this->_myIterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($this->_myArray));

		foreach($this->_myIterator as $this->_myValue)
		{
			$this->_myString .= $this->_myValue . $this->_mySeparator;
		}

		return mb_substr($this->_myString, 0, mb_strlen($this->_myString) - mb_strlen($this->_mySeparator));

	}
}

# В первом аргументе указывается символ с помощью которого будет разбит массив (можно подставлять что угодно).
$_Class_myBreak = new myBreak('-', array('Элемент 1', 'Элемент 2'));
echo $_Class_myBreak;

Результатом будет следующая строка: Элемент 1 - Элемент 2.

captcha

Советы по настройке онлайн-календаря под себя Советы по настройке онлайн-календаря
Что такое облачное хранилище и как им пользоваться? Что такое облачное хранилище и как им пользоваться?
Как выбрать пластины для теплообменника? Пластины для теплообменника
Изучение языка ECMAScript: основа современной веб-разработки История языка ECMAScript
Как добавить комментарий в HTML? HTML примеры
Apple позволит разработчикам распространять приложения напрямую с их сайтов Apple позволит разработчикам распространять приложения напрямую с их сайтов
jQuery 4.0 сокращает поддержку браузеров, удаляет API Новое в jQuery 4.0
Как продвинуть Telegram-канал: с нуля до результата Как продвинуть канал в Telegram с нуля?
Получить IT профессию с нуля: академия Eduson Получить IT профессию с нуля
Перспективы эволюции SEO: встречайте будущее продвижения в поисковых системах Будущее SEO-продвижения
Создание сайтов в Алматы: агентство site-promote.kz Разработка сайта компании
Антипкин Михаил Сергеевич о метавселенной, открывающей безграничные возможности для инноваций и экспериментов Антипкин Михаил Сергеевич о метавселенной
Сёрфинг с браузером FraudFox: исчерпывающее руководство Сёрфинг с браузером FraudFox
Где найти лицензионные ключи активации к ПО? Где найти лицензионные ключи активации к ПО?
Курсы веб дизайна: обучение онлайн Курсы веб дизайна: обучение онлайн
Как продлить срок службы бытовой техники? Как продлить срок службы бытовой техники?
Основы VPS/VDS: что нужно знать перед арендой? Основы VPS/VDS: что нужно знать перед арендой?
Откройте для себя азарт Mostbet KZ - ведущего онлайн-казино для геймеров Откройте для себя азарт Mostbet KZ - ведущего онлайн-казино для геймеров
Топ-10 игр для Android стоимостью менее $5 Топ-10 игр для Android стоимостью менее $5
Проверка авто в базе ГИБДД перед покупкой Проверка авто в базе ГИБДД перед покупкой