我如何检查我的函数 print/echo 是否有问题?
How can I check if my function print/echo's something?
我经常使用echo调试函数代码:
public function MyFunc() {
// some code...
echo "OK";
// some code...
}
我如何检查我的函数 print's/echo 是什么东西?
(伪代码):
MyFunc();
if (<when something was printed>){
echo "You forgot to delete echo calls in this function";
}
您可以使用 var_dump()
和 die()
更有效地调试您的代码。
$test = "debud test";
public function MyFunc($test)
{
// some code...
var_dump($test); die();
// some code...
}
这应该适合你:
只需调用您的函数,同时打开 output buffering 并检查内容是否为空,例如
ob_start();
//function calls here
MyFunc();
$content = ob_get_contents();
ob_end_clean();
if(!empty($content))
echo "You forgot to delete echos for this function";
这是检查是否回显某些内容的糟糕方法。
您可以将名为 is_echoed 的变量设置为 1,或者您可以 return 值
public $is_echoed = 0;
//rest
$this->is_echoed = 1;
或
function myFunc()
{
return "OK";
}
if(myFunc() == 'OK')
//rest
你为什么要尝试这样一个广泛的过程来查看是否有回显?
对于调试,您绝对可以使用 echo 来查看在特定用例期间是否命中了特定块。但我建议您使用标志和 return 调用函数的值。
function xyz () {
if (something) return some_value;
else return some_other_value;
}
没有特别需要变量和使用 space 存储 0 或 1 当你可以 return 硬编码文字时。
您可以创建一个 $debug
标志和一个 debuglog()
函数,它检查调试标志,然后才回显消息。然后您可以从一个位置打开和关闭调试消息。
define('DEBUGMODE', true); // somewhere high up in a config
function debuglog($msg){
if( DEBUGMODE ){ echo $msg; }
}
如果您想摆脱调试回声,可以搜索 "debuglog("
并删除这些代码行。这样您就不会意外删除正常执行所需的任何 echo 语句,也不会错过任何真正应该删除的调试 echo 语句。
我建议你使用 log4php
[1]
但如果没有,我使用这样的函数:
define('DEBUG', true);
function debug($msg){
if(DEBUG){ echo $msg; }
}
或类似这样的东西来查看 log in the browser 控制台:
function debug_to_console( $data ) {
if ( is_array( $data ) )
$output = "<script>console.log( 'Debug Objects: " . implode( ',', $data) . "' );</script>";
else
$output = "<script>console.log( 'Debug Objects: " . $data . "' );</script>";
echo $output;
}
我经常使用echo调试函数代码:
public function MyFunc() {
// some code...
echo "OK";
// some code...
}
我如何检查我的函数 print's/echo 是什么东西?
(伪代码):
MyFunc();
if (<when something was printed>){
echo "You forgot to delete echo calls in this function";
}
您可以使用 var_dump()
和 die()
更有效地调试您的代码。
$test = "debud test";
public function MyFunc($test)
{
// some code...
var_dump($test); die();
// some code...
}
这应该适合你:
只需调用您的函数,同时打开 output buffering 并检查内容是否为空,例如
ob_start();
//function calls here
MyFunc();
$content = ob_get_contents();
ob_end_clean();
if(!empty($content))
echo "You forgot to delete echos for this function";
这是检查是否回显某些内容的糟糕方法。
您可以将名为 is_echoed 的变量设置为 1,或者您可以 return 值
public $is_echoed = 0;
//rest
$this->is_echoed = 1;
或
function myFunc()
{
return "OK";
}
if(myFunc() == 'OK')
//rest
你为什么要尝试这样一个广泛的过程来查看是否有回显?
对于调试,您绝对可以使用 echo 来查看在特定用例期间是否命中了特定块。但我建议您使用标志和 return 调用函数的值。
function xyz () {
if (something) return some_value;
else return some_other_value;
}
没有特别需要变量和使用 space 存储 0 或 1 当你可以 return 硬编码文字时。
您可以创建一个 $debug
标志和一个 debuglog()
函数,它检查调试标志,然后才回显消息。然后您可以从一个位置打开和关闭调试消息。
define('DEBUGMODE', true); // somewhere high up in a config
function debuglog($msg){
if( DEBUGMODE ){ echo $msg; }
}
如果您想摆脱调试回声,可以搜索 "debuglog("
并删除这些代码行。这样您就不会意外删除正常执行所需的任何 echo 语句,也不会错过任何真正应该删除的调试 echo 语句。
我建议你使用 log4php
[1]
但如果没有,我使用这样的函数:
define('DEBUG', true);
function debug($msg){
if(DEBUG){ echo $msg; }
}
或类似这样的东西来查看 log in the browser 控制台:
function debug_to_console( $data ) {
if ( is_array( $data ) )
$output = "<script>console.log( 'Debug Objects: " . implode( ',', $data) . "' );</script>";
else
$output = "<script>console.log( 'Debug Objects: " . $data . "' );</script>";
echo $output;
}