• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

php打印

武飞扬头像
Luke
帮助5064

<?php
pre('__pre_show_all_start__');
pre('__pre_open_path_all__');
pre('__pre_default_type__', 22);
//if (is_file('/home/httpd/print-code-all-link/pre.php', 'r')) include_once "/home/httpd/print-code-all-link/pre.php";
/**
 * 
 * $content  要打印的内容
 * $status   状态,  是打印中继续执行,  还是exit 停止   1开启, 11,停止 2,开启 22, 停止;
 * $path  是否开启打印路径模式,  true  开启,  false  停止
 * $pre_code_wlq_stop 如果打印的内容有多个, 可以选择 在多个打印中的某个点停止, 可以选择在打印中的某个数字 开启显示 $path  第二个是all,则全部显示$path   [第几个$status=11,第几个显示$path]
 * return bool
 */
function pre($content = 'This is Empty Content', $status_type = 'Not', $path_type = 'Not', $pre_code_wlq_stop_type = 'Not')
{
    /*
        //使用方法
        pre(); //相当于 exit , 会显示路径信息
        pre($content); //打印内容,并且显示路径信息
        pre($content, 1|2|11|22); //打印内容, 按照传入状态执行相应顺序
        pre($content, 1|2|11|22, true|false,); // 打印内容, 按照传入状态执行顺序, 根据传入Bool 判断是否显示路径
        pre($content, 1|2|11|22, true|false, [1-n, 1-n|all]); // 打印内容, 按照传入状态执行顺序, 根据传入Bool 判断是否显示路径, [第几个$status=11,第几个显示$path]
        pre('trues'); //相当于 exit , 会显示路径信息
        pre($content, 'true'|'trues'); // 打印内容,  ture 是开启路径 $status = 11
        pre($content, false, [1-n, 1-n|all]); // 打印内容,  ture 是开启路径 $status = 11
        //内存与时间模式
        pre('__pre_show_all_start__');
        //只显示路径内存信息
        pre('__show_all__');
        //开启路径打印
        pre('__pre_open_path__'); //开启下一个
        pre('__pre_open_path_all__'); //开启所有
        //默认打印类型
        pre('__pre_default_type__', 1 || 11 || 2 || 22);
        //是否开启LOG
        pre('__pre_open_log__');
    */
    $status = $status_type === 'Not' ? 11 : $status_type;
    $path = $path_type === 'Not' ? false : $path_type;
    $pre_code_wlq_stop = $pre_code_wlq_stop_type === 'Not' ? [0, 0] : $pre_code_wlq_stop_type;
    //开启内存与时间计算
    if ($content === '__pre_show_all_start__') {
        $_SESSION['__pre_start_memory__'] = memory_get_usage();
        $_SESSION['__pre_start_time__'] = microtime(true);
        return false;
    }
    //开启路径显示
    if ($content === '__pre_open_path__' || $content === '__pre_open_path_all__') {
        $_SESSION['__pre_open_path__'] = 'start';
        //是否需要一直开启
        if ($content === '__pre_open_path_all__') $_SESSION['__pre_open_path_status__'] = 'all';
        return false;
    }
    //默认执行类型
    if ($content === '__pre_default_type__') {
        $_SESSION['__pre_default_type__'] = $status;
        if ($path === true) $_SESSION['__pre_default_type_force__'] = $path;
        return false;
    }
    //强制开启LOG
    if ($content === '__pre_open_log__') {
        $_SESSION['__pre_open_log__'] = true;
        return false;
    }
    if (isset($_SESSION['__pre_open_log__']) && $_SESSION['__pre_open_log__'] === true) {
        $__pre_open_log__ = true;
    }
    //如果只是本次使用,则删除 pre_open_path
    if (!empty($_SESSION['__pre_open_path__']) || !empty($_SESSION['__pre_open_path_status__'])) {
        if (empty($_SESSION['__pre_open_path_status__'])) unset($_SESSION['__pre_open_path__']);
        $path = true;
    }
    //查找是否开启默认打印类型
    if ((isset($_SESSION['__pre_default_type__']) && !empty($_SESSION['__pre_default_type__'])) && ($status_type === 'Not' || (isset($_SESSION['__pre_default_type_force__']) && $_SESSION['__pre_default_type_force__'] === true))) {
        $status = $_SESSION['__pre_default_type__'];
        unset($_SESSION['__pre_default_type__']);
        unset($_SESSION['__pre_default_type_force__']);
    }
    $backtrace = debug_backtrace();
    if (is_array($content) && $status === 11 && $path === false && $pre_code_wlq_stop === [0, 0]) {
        $content_array = $content;
        foreach ($content_array as $k => $v) {
            $$k = $v;
        }
    }
    $pre_log_all_content = '';
    $_SESSION['__pre_code_wlq__'] = empty($_SESSION['__pre_code_wlq__']) ? 1 : $_SESSION['__pre_code_wlq__']   1;
    $pre_code_wlq = (int) $_SESSION['__pre_code_wlq__'];
    $pre_log_all_content .= "\r\n\r\n<xmp> _____[{$pre_code_wlq}]【   Start Pre   】[{$pre_code_wlq}] _____ \r\n";
    $end_pre = "\r\n\r\n _____[{$pre_code_wlq}]【   End   Pre   】[{$pre_code_wlq}] _____  </xmp>\r\n";
    $path_array = ($status === false && is_array($path) && ($path[1] > 0 && $pre_code_wlq === $path[1]));
    if ($content === 'This is Empty Content' || (isset($path[1]) && $path[1] === 'all') || (isset($pre_code_wlq_stop[1]) && $pre_code_wlq_stop[1] === 'all')) {
        $path = true;
    }
    if ($content === 'show_all' || $content === 'show_all_not_end' || $path === true || in_array($status, ['true', 'trues']) || (isset($pre_code_wlq_stop[1]) && $pre_code_wlq_stop[1] > 0 && $pre_code_wlq === $pre_code_wlq_stop[1]) || $path_array) {
        $pre_log_all_content .= "\r\n [ Using the path ]     \r\n\r\n";
        $args = '';
        $type = ['object' => 'get_class', 'array' => 'array'];
        foreach ($backtrace as $k => $v) {
            foreach ($v['args'] as $ks => $vs) {
                if ($ks === (count($v['args']) - 1)) {
                    $args .= gettype($vs) . '  "' . (!empty($type[gettype($vs)]) ? is_object($vs) ? $type[gettype($vs)]($vs) : $type[gettype($vs)] : (mb_strlen($vs) > 100 ? str_replace(["\r\n", "\n", "\r", "\t"], '\n', mb_substr($vs, 0, 100, 'UTF-8')) : $vs)) . '"';
                } else {
                    $args .= gettype($vs) . '  "' . (!empty($type[gettype($vs)]) ? is_object($vs) ? $type[gettype($vs)]($vs) : $type[gettype($vs)] : (mb_strlen($vs) > 100 ? str_replace(["\r\n", "\n", "\r", "\t"], '\n', mb_substr($vs, 0, 100, 'UTF-8')) : $vs)) . '", ';
                }
            }
            $pre_log_all_content .= "|    path ({$k}) :  [  " . $v['file'] . "  :  " . $v['line'] . "  ->  " . $v['function'] . " ( {$args} ) ]\n";
            $args = '';
        }
        $pre_log_all_content .= "\r\n[ Run Memory ]    \r\n\r\n";
        $start_memory = isset($_SESSION['pre_start_memory']) ? $_SESSION['pre_start_memory'] : memory_get_usage();
        $pre_log_all_content .= "|    PHP used memory :   [ " . number_format((memory_get_usage() - $start_memory) / 1024, 2) . " KB ]" . " -- [ " . number_format((memory_get_usage() - $start_memory) / 1024 / 1024, 2) . " MB ]" . "\r\n\r\n";
        $pre_log_all_content .= "|    Total memory used : [ " . number_format(memory_get_usage() / 1024, 2) . " KB ]" . " -- [ " . number_format(memory_get_usage() / 1024 / 1024, 2) . " MB ]" . "\r\n\r\n";
        $pre_log_all_content .= "|    System Allocates Maximum Memory : [ " . number_format(memory_get_peak_usage() / 1024, 2) . " KB ]" . " -- [ " . number_format(memory_get_peak_usage() / 1024 / 1024, 2) . " MB ]" . "\r\n";
        $pre_log_all_content .= "\r\n[ Run Time ]    \r\n\r\n";
        $start_time = isset($_SESSION['pre_start_time']) ? $_SESSION['pre_start_time'] : microtime(true);
        $pre_log_all_content .= "|    PHP used time : [ " . number_format(microtime(true) - $start_time, 8) . "秒 ]\r\n\r\n";
    }
    //只显示路径时间内存
    if ($content === '__show_all__') {
        print_r($pre_log_all_content . $end_pre, true);
        error_log(print_r($pre_log_all_content . $end_pre, true));
        return false;
    }
    if ($content === '__show_all_not_end__') {
        print_r($pre_log_all_content . $end_pre, true);
        error_log(print_r($pre_log_all_content . $end_pre, true));
    }
    if ($content === 'trues') {
        $status = 11;
    }
    if (in_array($status, ['true'])) {
        $status = 11;
    } else if (in_array($status, ['trues'])) {
        $status = 1;
    }
    if ($status === false && is_array($path) && ($path[0] > 0 && $pre_code_wlq === $path[0])) {
        $status = 11;
    }
    if ($pre_code_wlq_stop[0] > 0 && $pre_code_wlq === $pre_code_wlq_stop[0]) {
        $status = 11;
    }
    $pre_log_all_content .= "\r\n[ Print Content ]    \r\n\r\n";
    if (is_object($content)) $pre_log_all_content .= "class." . get_class($content) . ".php\r\n\r\n";
    //打印头部
    print_r($pre_log_all_content);
    //输出正文
    if (in_array($status, [1, 11])) {
        print_r($content);
    } else {
        var_dump($content);
    }
    //打印尾部
    print_r($end_pre);
    //log
    if ($__pre_open_log__ === true) {
        error_log(print_r($pre_log_all_content, true));
        error_log(print_r($content, true));
        error_log(print_r($end_pre, true));
    }
    if (in_array($status, [11, 22])) {
        $_SESSION['__pre_code_wlq__'] = 0;
        exit;
    }
    return false;
}


这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/taneeha
系列文章
更多 icon
同类精品
更多 icon
继续加载