php打印
<?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;
}
本篇文章来至:IT社区
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通
- 本文地址: https://www.swvq.com/boutique/detail/taneeha
- 联系方式: luke.wu@swvq.com
系列文章
更多
同类精品
更多
精彩评论
-
28 个提升JavaScript开发效率的 VSCode 插件
PHP中文网 05-24 -
B站在海外打不开怎么办B站打不开解决办法
sixfast6 07-14 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
抖音国际版要用什么加速器能流畅刷Tiktok的加速器
TK小达人 08-02 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
PHPSTROM的远程调试
PHP中文网 03-25 -
pixiv是什么意思
PHP中文网 06-28 -
pr做好的序列不见了怎么办
PHP中文网 05-12 -
VMware Workstation 无法启动,提示不支持在此主机上使用虚拟化性能计数器
Luke 07-28 -
navicat premium 15安装 + 注册机获取永久许可证
餘yuqn 07-27