Как удалить глобальную переменную в моем «режиме отладки» (Global Variable Scare) - PullRequest
0 голосов
/ 16 июня 2011

Мне интересно, как создать отладочную комнату для своих приложений.

Мой пример - вывод содержимого переменной на экран, чтобы я мог видеть, что мои переменные делают в течение всего процесса. Чтобы убедиться, что они делают то, что они должны делать. (бедняга тдд?)

-------- НОВЫЙ КОД --------------------

Итак, это то, что я придумал, но это касается глобальной переменной !!

У меня есть общий файл, который включен во все страницы моего скрипта. Там я положил следующее:

<?php //COMMON FILE
$debug_mode = 'on'; //my trigger

if( strtolower($debug_mode) == 'on'){
    $debug = "<hr /><pre>";
    if( file_exists('debug_mode.php') ){  //This file will never be used in a
        include('debug_mode.php');    //a production environment
    }
}

function debug($str, &$debug){
    if( function_exists('debugff') ){
        $str = debugff($str, $debug);
    }
    else{
        unset($debug);
    }
}
?>

.

<code><?php //DEBUG_MODE FILE NEVER USED IN PRODUCTION MODE
if( strtolower($debug_mode) == 'on'){ 
    function debugff($debugstring, &$debug){ 

        global $debug;

        if( is_null($debugstring) ){
            echo $debug . "
<час /> "; } еще { $ debug. = $ debugstring. "\ П"; } } } ?>

Чтобы использовать скрипт, я использую вызов функции отладки.

debug ("имя пользователя: $ user", $ debug);

И я могу сделать это миллион раз. и когда я хочу напечатать результаты, я просто звоню

debug (null, $ debug);

Я слышал бесчисленное количество раз, чтобы никогда не использовать глобальную переменную, и это первый раз, когда я ее реализую. То, как я это настроил, означало бы, что в «реальном мире» глобальная переменная никогда не будет вызываться, но как мне получить глобальную переменную отсюда.

Ответы [ 2 ]

1 голос
/ 16 июня 2011

Попробуйте выучить фреймворк PHP. Они решают эти проблемы лучше и ООП.

В любом случае, в вашем примере вы можете удалить большую часть кода:

$debug_mode = TRUE;

function dump() {
  global $debug_mode;

  if ($debug_mode) {
    call_user_func_array('var_dump', func_get_args());
  }
}

Затем вы можете вывести свои переменные с помощью dump ($ var1, $ var2, $ var3) и не беспокоиться о рабочем режиме вне этой функции. При отключении режима отладки дампы не будут отображаться.

0 голосов
/ 05 апреля 2013

Вместо использования глобальной переменной вы можете просто вызвать функцию (по одной в каждой строке).

Затем создать скрипт сборки, который компилирует (как это читается в PHP: собирать вместе) производствокод.Этот скрипт сборки просто удаляет все строки, содержащие эти вызовы.

Скрипт сборки также не копирует определение функции.

Затем запустите приемочные и интеграционные тесты для рабочего кода для сборки,Поскольку определение функции отладки теперь отсутствует, она будет вызывать фатальную ошибку при вызове.Эти фатальные ошибки будут замечены интеграционными и приемочными тестами.Но поскольку все вызовы были удалены, тесты должны пройти без каких-либо проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...