nikoutel/phpdebugr

变量检查的调试工具。

v1.2 2019-04-30 10:19 UTC

This package is not auto-updated.

Last update: 2024-09-25 13:14:38 UTC


README

变量检查的调试工具。

如果您无法访问(或不想使用)像xdebug这样的单步调试器,这是一个快速有效的调试工具/解决方案。它是一个功能强大的'var_dump'替代品,具有日志记录功能和控制台支持。

使用方法

Debugr::eDbg(mixed $var [, string $description [, string $writeOption]])  

Debugr::eDbg$var 的值和 $description 文本(可选)写入输出,该输出在 config.php 中定义,使用 $writeOption。可能的输出选项是: ScreenLogConsoleNone
(默认值是 Screen
 

Debugr::eDbgScreen(mixed $var [, string $description [, string $writeOption]])  

Debugr::eDbgScreen$var 的值写入屏幕,无论默认的 config.php 文件条目如何。
 

Debugr::eDbgLog(mixed $var [, string $description [, string $writeOption [, sting|null $logFile]])  

Debugr::eDbgLog$var 的值写入在 config.php 中定义的日志文件,通过 Debugr::setLogfile() 设置或通过 $logFile 参数传递。
 

Debugr::eDbgConsole(mixed $var [, string $description [, string $writeOption]])  

Debugr::eDbgConsole$var 的值写入浏览器控制台。
 

Debugr::setLogFile(string $logFile)  

Debugr::setLogFile 设置日志文件,覆盖 config.php 文件选项。
 

参数

var

要检查的变量
 

description (可选)

在变量值之前显示的文本,例如 $thisVar 的值是:
 

writeOption (可选)

输出的写入/格式化方式

选项

eechoes用于类似 echo 的输出
vvarDump用于类似 var_dump 的输出
rprintR用于类似 print_r 的输出
xexport用于类似 var_export 的输出

如果您省略此参数,则使用默认值。对于标量类型(整数、双精度浮点数、字符串)默认为 echoes,对于复合类型(数组、对象、资源、布尔值、null、未知类型)默认为 varDump。默认值可以在 config.php 文件中更改。
(我知道布尔值实际上是标量,Null 是,嗯,Null,但它们更适合组合组)

日志记录

输出可以通过在 config.php 中指定 Log 作为输出或直接调用 Debugr::eDbgLog() 来记录到文件。

使用的日志文件可以按以下方式定义

选项
  • config.php 中的配置选项
    默认选项。预定义为 output.log

  • 通过 Debugr::setLogfile()
    config.php 选项具有更高的优先级。

  • Debugr::eDbgLog() 的第 4 个参数
    具有最高的优先级。仅为此调用设置。

(见以下示例)

注意

如果使用 None 作为默认输出,Debugr::eDbg 不会产生任何输出。对于 eDbgScreeneDbgLogeDbgConsole 的情况则不成立。您可以通过在 config.php 中设置:disable:true 来禁用所有功能。这相当于一个“关闭开关”。

安装

使用 Composer 还是无需 Composer?这是一个问题!

composer

composer require nikoutel/phpdebugr

无需 composer
只需将文件放在您的项目中,并按照以下示例使用。

require('path/to/Debugr/src/Debugr.php');
use Nikoutel\Debugr\Debugr;

如何使用

使用 eDbg 将变量值输出到默认输出。在开发者服务器上,您可以选择 Screen。如果您必须在生产服务器上使用,请使用 Log,这样所有的 Debugr::eDbg 调用都会写入日志文件而不是屏幕。

在某些情况下,例如,当在屏幕上输出变量会破坏网站布局时,您可以使用 eDbgConsole 来使用浏览器控制台,而不受默认输出的限制。同样地,您可以根据情况和使用需求使用 eDbgScreeneDbgLog

值将根据变量的类型或提供的 writeOption 进行格式化。

要求

  • PHP 5.3(最小版本)
  • (可选) "Multibyte String" php 扩展(mbstring)- 允许在日志文件名中使用多字节字符

示例

// composer:
require __DIR__ . '/vendor/autoload.php';
use Nikoutel\Debugr\Debugr;

// no composer:
require('path/to/Debugr/src/Debugr.php');
use Nikoutel\Debugr\Debugr;
$varB = 42;
Debugr::edbg($varB);

42


$varC = 103993/33102;
Debugr::edbg($varC, 'the value of pi is');

pi 的值是:3.1415926530119


$varA = 'Guru Meditation';
Debugr::edbg($varA, NULL, 'v');

string(15) "Guru Meditation"


$varE = array(
    'black jack',
    'gin rummy',
    'hearts',
    'bridge',
    'checkers',
    'chess',
    'global thermonuclear war');
Debugr::edbg($varE, 'Shall we play a game?','r');
>Shall we play a game?:
Array
(
    [0] => black jack
    [1] => gin rummy
    [2] => hearts
    [3] => bridge
    [4] => checkers
    [5] => chess
    [6] => global thermonuclear war
)

$varF = fopen('secretFile.xml', 'r');
Debugr::edbgLog($varF);
fclose($varF);
Debugr::edbgLog($varF);

将生成一个日志文件条目

(18/10/2017 17:23:58) /LondonBlue/Secret/getSecret.php
resource(19) of type (stream)

(18/10/2017 17:23:58) /LondonBlue/Secret/getSecret.php
resource(19) of type (Unknown)

Debugr::edbgLog($varG);                         # writes to output.log defined in config.php
Debugr::setLogFile(newOutput.log);
Debugr::edbgLog($varH);                         # writes to newOutput.log
Debugr::edbgLog($varI, 'v', 'prioOutput.log');  # writes to prioOutput.log
Debugr::edbgLog($varJ);                         # writes to newOutput.log

$book = new stdClass;
$book->php = 'PHP Design Patterns, Stephan Schmidt';
$book->c = 'The C Programming Language, Kernighan & Ritchie';
$book->unix = 'The unix programming environment, Kernighan & Pike';
$book->economics = 'Making Millions For Dummies';
Debugr::edbgConsole($book, '$book');

将生成控制台输出

Screenshot Console

许可

本软件根据 MPL-2.0 许可。

    This Source Code Form is subject to the terms of the Mozilla Public
    License, v. 2.0. If a copy of the MPL was not distributed with this
    file, You can obtain one at http://mozilla.org/MPL/2.0/.