Станьте __ ФАЙЛ __ постоянными для вызывающей стороны функции в PHP

Я думаю, что производительность JavaScript (время), тестируя достаточно. Я нашел очень удобную статью [приблизительно 110] тестирование производительности JavaScript здесь .

12
задан Carson Myers 26 November 2009 в 06:43
поделиться

2 ответа

вам следует взглянуть на трассировку стека, чтобы делать такие вещи. В PHP есть функция debug_backtrace

include "bar.php";
call_it();

//bar.php
function call_it() {
   $bt =  debug_backtrace();

   echo "Calling file: ". $bt[0]['file'] . ' line  '. $bt[0]['line'];
}

, надеюсь, она поможет

по тому же принципу, что и debug_print_backtrace . Вы можете найти полезной debug_print_backtrace , она делает то же самое, но php обрабатывает форматирование и печать всей информации сам по себе.

28
ответ дан 2 December 2019 в 04:53
поделиться

debug_backtrace () - ваш друг

Это то, что мы используем для вывода полной трассировки стека для текущей строки . Чтобы адаптировать его к вашему случаю, игнорируйте верхнюю часть массива $ trace .

class Util_Debug_ContextReader {
    private static function the_trace_entry_to_return() {
        $trace = debug_backtrace();

        for ($i = 0; $i < count($trace); ++$i) {
            if ('debug' == $trace[$i]['function']) {
                if (isset($trace[$i + 1]['class'])) {
                    return array(
                        'class' => $trace[$i + 1]['class'],
                        'line' => $trace[$i]['line'],
                    );
                }

                return array(
                    'file' => $trace[$i]['file'],
                    'line' => $trace[$i]['line'],
                );
            }
        }

        return $trace[0];
    }

    /**
     * @return string
     */
    public function current_module() {
        $trace_entry = self::the_trace_entry_to_return();

        if (isset($trace_entry['class']))
            return 'class '. $trace_entry['class'];
        else
            return 'file '. $trace_entry['file'];

        return 'unknown';
    }

    public function current_line_number() {
        $trace_entry = self::the_trace_entry_to_return();
        if (isset($trace_entry['line'])) return $trace_entry['line'];
        return 'unknown';
    }
}
3
ответ дан 2 December 2019 в 04:53
поделиться
Другие вопросы по тегам:

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