Задать вопрос
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"

Что за Undefined offset?

Версии: пхп - 7.3, сим - 5.0
Есть AclSubscriber, подписка на CONTROLLER. Функция check вызывается первой.
Вот собственно и она

public function check(ControllerEvent $event): void
    {

        $request = $event->getRequest();

        if($request->headers->has('authorization')){
            /** @var AccessTokenInterface $token */
            $token = $this->container->get(AccessTokenInterface::class);
        }else{
            $token = null;
        }



        $acl = new AclPrivileges($token, $this->rules);
        $a = (array) $event->getController();
        $s = $a[1];

        var_dump($s);

        list($controller, $action) = [get_class($event->getController()), $s];

        $resource = "{$controller}@{$action}";


        $acl->isAllowed($resource);

        return;
    }


Самое замечательное вот что: Выдает нотис на строку $s = $a[1];, а именно на $a[1], как видно, результат записывается в переменную $s, но при вардампе переменной выдается содержимое этой переменной (то же что и у $a[1]), таким образом получается вот такая история:
5df64dbb1d7cb771932232.png
То есть по индексу в массиве есть значение "login", но пхп считает, что такого индекса не существует. Как такое может быть?
  • Вопрос задан
  • 537 просмотров
Подписаться 1 Простой 7 комментариев
Решения вопроса 1
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
У вас дампится все отлично — если увидите, на скрине вверху есть слово login
Очевидно код срабатывает еще раз, там где нет метода и крашится, тк в новый раз этих данных нет...

Чтобы это узнать, перед получением $s сделайте:
dd(get_class($event->getController()));
И покажите полный вывод ВСЕХ значений...

Вообще потратьте время и поставьте xDebug, вы бы все поняли в течение 2 секунд что и куда прилетает и почему...

Если выбрали дебаг как раньше на коленке, то у симфы есть функция dump(), все вызовы которой выводятся в панеле разработчика!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы