Подтвердить что ты не робот

Отладка в CodeIgniter (и MVC)

Часто я чувствую необходимость сбросить переменную для цели отладки. В CodeIgniter я изо всех сил пытаюсь это сделать, потому что я не могу просто "отгонять" переменную, не передавая ее сначала, что, по-моему, является болезненным. Я прочитал официальную документацию, хотя я нашел хорошее решение с функцией log_message, но не могу заставить ее работать, хотя я успешно сделал папку "logs" доступной для записи и изменил "порог", как это было рекомендовано. Любые предложения?

http://ellislab.com/codeigniter/user-guide/general/errors.html

4b9b3361

Ответ 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
    )