Назад к задачам
Junior — Senior
9

Настройка строкового представления объекта Math

Компании, где спрашивали:

Merlion
Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Требуется изменить существующий код так, чтобы при попытке вывести объект класса Math через echo (без явного вызова метода) отображалось значение факториала числа, переданного в конструктор.

class Math
{
    public function __construct(private int $value)
    {
    }

    public function factorial(): int
    {
        if ($this->value < 0) {
            throw new Exception("value less 0");
        }

        $product = 1;

        for ($i = 1; $i <= $this->value; $i++) {
            $product *= $i;
        }

        return $product;
    }
}

$math = new Math(-5);

try {
    echo $math->factorial();
} catch (Exception $e) {
    echo $e->getMessage();
}

Ваша задача – добавить необходимый механизм (например, магический метод __toString), который будет возвращать результат factorial() и тем самым обеспечить корректный вывод при использовании echo $math;.