@lumpenkoder

Почему возвращается ошибка Fatal error: Function name must be a string in?

Пытаюсь добавить поддержку миддлварей в свой проект, путем добавления pipeline, но возвращается ошибка:
Function name must be a string in /home/ugwwspov/bot.qeo.su/hardown/vk/VK/Pipeline/Pipeline.php on line 29

Сам код:
<?php

class Pipeline
{
    /**
     * @var callable[]
     */
    private $stages;

    public function pipe(callable $stage)
    {
        $this->stages[] = $stage;
        return $this;
    }

    public function __invoke($context, $next = null)
    {
        $this->start($context, $next);
    }

    public function start($context, $next = null)
    {
        if(!$current = array_shift($this->stages) and $next != null)
        {
            $next($context);
        }
        return $current($context, function ($context) use ($next) {
            return $this($context, $next);
        });
    }
}
  • Вопрос задан
  • 137 просмотров
Пригласить эксперта
Ответы на вопрос 1
@alexalexes
Либо у вас сервер PHP ниже версии 5.3.0 (не позволяет использовать магический метод __invoke).
Либо попробуйте $this добавить в замыкание (где use).
return $current($context, function ($context) use ($this, $next) {
            return $this($context, $next);
Ответ написан
Ваш ответ на вопрос

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

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