На этом уроке мы разберемся, как работать над ошибками и читать сигналы дебаггера YII2
Дата отправки отчёта:
20 января 2020 г.
Задание выполнено: за
48 мин.
Чему научился:
Проверил работу дебаггера Yii, придумал ошибку. На верхнем скриншоте слева на строке 33 в функции getBulletins допустил опечатку, вместо $currSession написал $currSesion. В результате справа в окне браузера сообщается о неопределенной переменной currSesion и указывается место в коде, где выполняется обращение к этой переменной. Посмотрев немного выше, на строке 31 можно увидеть определение переменной currSession и становится понятно, что была допущена опечатка. Результат исправления ошибки показан на нижнем скриншоте.
Ошибки бывают разные, иногда приходится и по попотеть. Самое неприятное когда ты исправил все ошибки, загрузил на сервер и выяснил что твоя работа над ошибками только началась.
Отчёт оценивали: 6203. Николай Миролюбов+16401. Яков+121753. Николай+17119. Новопашин Владимир+117947. Dmitry Sinitsin+123035. MartinO0791. Валерий Жданов+19014. Николай Денисов+1
Начинаем практику по языку C#
Чтобы стать хорошим программистом — нужно писать программы.
На нашем сайте очень много практических упражнений.
После заполнения формы ты будешь подписан на рассылку
«C# Вебинары и Видеоуроки»,
у тебя появится доступ к видеоурокам и консольным задачам.
Несколько раз в неделю тебе будут приходить письма —
приглашения на вебинары, информация об акциях и скидках,
полезная информация по C#.
Научился: Научился ловить некоторые ошибки с помощью встроенного дебагера.
Отличный урок. Его бы в начало курса! Трудности: Повторить ошибки, приведенные в уроке - большого ума не надо.
Я попробовал сделать ошибку другого типа:
в файле
...\views\user\adduser.php
строке
'adduser-Form']); ?>
заменил 'adduser-Form' на 'addser-Form'
При этом система не обнаружила ошибки и приняла нового пользователя.
Как это можно объяснить?
Научился: Внес ошибку в метод getBulletins в контроллере BulletinsController. Вместо поиска по user_id указал userid. В результате на первом скриншоте yii сообщает о неизвестном столбце userid в блоке where. Yii сообщает запрос, который вывел ошибку SELECT * FROM `bulletins` WHERE (`userid`=1) AND (`status`='wait'). Если знать структуру таблицы bulletins, то можно понять, что ошибка в опечатке userid и надо заменить на правильное user_id. Теперь надо найти место в коде, которое вызвало эту ошибку. Далее ниже в пункте 1 показано место генерации исключения это файл Schema.php. Это внутренний файл Yii, который я не редактировал, значит ошибка возникла где-то ранее в цепочке вызовов функций. Далее ниже идет цепочка из 6 вызовов функций, которые так же как и 1 являются системными. Пролистав ниже можно найти пункт 7 (на втором скриншоте), в котором показан файл BulletinsController. Этот файл в отличие от первых 6 был создан мной, поэтому ошибка вполне может быть здесь. В 7 пункте Yii указывает на sql-запрос, в котором в блоке where идет обращение к userid. Ранее yii сообщал, что не может найти поле userid. Исправив userid на user_id ошибка исчезла.