Вывод последовательности чисел при помощи магического метода

YPower

Новичок
Добрый день, помогите, пожалуйста с решением задачи.


Условие задачи

Есть класс Sequence. Если создать экземпляр через new Sequence(10,20,5), то предполагается найти последовательность чисел от 10 до 20 за 5 шагов, то есть: 10, 12, 14, 16, 18, 20.

Реализуйте у него магический метод __invoke так, чтобы при объекта как функции выводилась последовательность чисел


Моя попытка решения следующая:

PHP:
class Sequence
{
    public function construct($from, $to, $steps)
    {
        $this->from = $from;
        $this->to = $to;
        $this->steps = $steps;
    }

    public function __invoke ()
    {
      return range($from, $to, $steps);
    }
    
}

$sequence = new Sequence(10, 20, 5);
echo $sequence(). "<hr>";
Но естественно вылезает ошибка. Буду признателен за любую помощь .
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну у тебя понятное дело метод __invoke ничерта не знает про локальную, не классовую область видимости - надо поправить. Ну и конструктор у тебя написан не так, где его необходимое достояние в виде __?
 

YPower

Новичок
Ну у тебя понятное дело метод __invoke ничерта не знает про локальную, не классовую область видимости - надо поправить. Ну и конструктор у тебя написан не так, где его необходимое достояние в виде __?
Конструктор исправил, лажанулся...

Могли бы вот это прояснить - "Ну у тебя понятное дело метод __invoke ничерта не знает про локальную, не классовую область видимости - надо поправить"
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Ну надо понимать что у тебя класс внутри метода __invoke не видит этих переменных, которые ты объявил в конструкторе, надо к ним обратиться так, как этого требует область видимости метода класса. Почему-то в конструкторе ты написал по другому, а тут в __invoke почему-то решил, что они станут видны
 

YPower

Новичок
Ну надо понимать что у тебя класс внутри метода __invoke не видит этих переменных, которые ты объявил в конструкторе, надо к ним обратиться так, как этого требует область видимости метода класса. Почему-то в конструкторе ты написал по другому, а тут в __invoke почему-то решил, что они станут видны
Всё, теперь понял, спасибо
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Откуда вы берете эти бесполезные задания - я ума не приложу.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
На мой взгляд это чтение литературы и последующее подкрепление этих знаний на комплексных заданиях, вроде корзины заказов, гостевой книге с регистрацией и прочим, здесь придется провести декомпозицию задачи на более мелкие и научиться правильно обрабатывать пользовательский ввод, работать с БД и все в таком духе.

А то что вы делаете - нужно в ОЧЕНЬ редких случаях. Но вот азам, вроде области видимости переменных - вас почему-то никто не научил, что говорит о компетентности преподавателей не самым лучшим образом. Хотя может быть я и не прав, но впечатление именно такое.
 
Сверху