Sobes.tech
Junior — Senior

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

livecode

Podmínka úkolu

Требуется изменить существующий код так, чтобы при попытке вывести объект класса 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;.