Отладка в CodeIgniter (и MVC)
Часто я чувствую необходимость сбросить переменную для цели отладки. В CodeIgniter я изо всех сил пытаюсь это сделать, потому что я не могу просто "отгонять" переменную, не передавая ее сначала, что, по-моему, является болезненным. Я прочитал официальную документацию, хотя я нашел хорошее решение с функцией log_message, но не могу заставить ее работать, хотя я успешно сделал папку "logs" доступной для записи и изменил "порог", как это было рекомендовано. Любые предложения?
http://ellislab.com/codeigniter/user-guide/general/errors.html
Ответы
Ответ 1
Это не очень хорошая практика, но вы можете выводить что-либо в браузер в любой момент исполнения (из основных классов, библиотек, моделей и контроллеров), просто используя print_r()
в точке, в которой вы хотите вывести информацию.
Конечно, это иногда не отображается, так как могут быть перенаправления/маршруты/и т.д., которые приводят пользователя к следующему этапу выполнения контроллера, но если вы хотите его подавить (опять же, только для целей отладки), вы может использовать:
print_r($string_or_variable_to_debug);
die();
Команда die()
остановит все выполнение и оставит вас только с информацией, которую вы хотите вывести.
Использование log_message()
- лучшая практика, но трудно понять, почему у вас нет успеха там, если вы говорите, что выполнили следующие шаги:
- Убедитесь, что папка журналов настроена на запись.
- Установите
$config['log_threshold']
в 2, 3 или 4
- Используется такая функция:
log_message('debug','Message you want to log');
Если вы хотите использовать print_r()
для красивого форматирования массива или объекта внутри сообщения журнала, вам нужно будет установить второй параметр print_r()
на TRUE
, например:
log_message('debug',print_r($array_or_object,TRUE));
Ответ 2
Вам нужно установить $config ['log_threshold'] в файле config.php, поскольку по умолчанию он равен 0 (без журналов)
- 0 = Отключает ведение журнала, журнал ошибок отключен
- 1 = Сообщения об ошибках (включая ошибки PHP)
- 2 = Отладочные сообщения
- 3 = Информационные сообщения
- 4 = Все сообщения
Ответ 3
Я думаю, что ответ вы ищете:
Codeigniter - помощник разработчика Debug
Вы можете добавить этот файл в папку application/helper
. Затем выполните автозагрузку vayes_helper
в application/config/autoload.php
для общего использования. Тогда все, что вам нужно, пишет:
vdebug($variable); // In Controllers, Models, Libraries, Helpers
<?=vdebug($variable)?> // In View files
Ответ 4
log_message('debug',print_r($array_or_object_you_want_to_print,TRUE));
Это будет хорошо печатать ваш массив в журнале. Ниже приведен пример вывода:
[1] => Array
(
[uid] => 10049082
[phone_id] => 2
[friend_status] => 0
[friend_event_hide_status] =>
)
[2] => Array
(
[uid] => 10042768
[phone_id] => 4
[friend_status] => 3
)
[3] => Array
(
[uid] => 10078255
[phone_id] => 6
[friend_status] => 2
)
[4] => Array
(
[uid] => 10078255
[phone_id] => -1
[friend_status] => 1
[name] => Rajesh
)
[5] => Array
(
[uid] => 10078255
[phone_id] => -1
[friend_status] => 1
[name] => ritesh kumar
)
[6] => Array
(
[uid] => 10078255
[phone_id] => -1
[friend_status] => 1
[name] => Le
)