nikoutel / phpdebugr
变量检查的调试工具。
Requires
- php: >=5.3
Suggests
- ext-mbstring: Allows multibyte characters to be used in log filenames
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
。可能的输出选项是: Screen
、Log
、Console
和 None
。
(默认值是 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 (可选)
输出的写入/格式化方式
选项
e
或 echoes
– 用于类似 echo
的输出
v
或 varDump
– 用于类似 var_dump
的输出
r
或 printR
– 用于类似 print_r
的输出
x
或 export
– 用于类似 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
不会产生任何输出。对于 eDbgScreen
、eDbgLog
、eDbgConsole
的情况则不成立。您可以通过在 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
来使用浏览器控制台,而不受默认输出的限制。同样地,您可以根据情况和使用需求使用 eDbgScreen
、eDbgLog
。
值将根据变量的类型或提供的 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');将生成控制台输出
许可
本软件根据 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/.