t-alexashka
@t-alexashka
Сразу пишу legacy код

Как вызвать класс как функцию?

Добрый день товарищи друзья!

Недавно видел такое исполнение:

$sum = new SumAB(1,2);
echo $sum; // 3


Как это реализовано, что возвращается не экземпляр класса SumAB а сразу результат работы конструктора (или чего-то еще внутри)?
  • Вопрос задан
  • 237 просмотров
Решения вопроса 3
KorniloFF
@KorniloFF
Работаю по font-end / JS
class SumAB {
	function __construct($a,$b) {
		$this->a= $a;
		$this->b= $b;
		$this->sum= ($a + $b) . '';
	}
	function __toString () {
		return $this->sum;
	}
};

$sum = new SumAB(1,2);
echo $sum; // 3
Ответ написан
Комментировать
@D3lphi
Определить метод __toString() в классе. При попытке преобразовать объект в строку будет возвращаться результат работы этого метода.

class Example
{
    public function __toString()
    {
        return "this is Example class.";
    }
}

$example = new Example();
echo $example; // Выведет this is Example class.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы