我不喜欢var_dump打印出对象的方式。我想用这个函数覆盖它:
function var_dump($object, $die = true) {
print '<pre>';
print_r($object);
if ($die) die();
}
我知道如何在我的应用程序中覆盖它,但是有没有办法在PHP配置级别上为所有站点全局覆盖它?
答案 0 :(得分:4)
你不能在PHP中做到这一点(通过“好方法”)。还有更多 - 你不应该。
var_dump()
正在做的事情是正确的:普通输出,仅此而已。如果要更改它,那么根据定义,您需要一些用户定义的行为。因此:
或者,如果您因某种原因想使用var_dump()
名称,请使用namespace
,如:
namespace Utils;
function var_dump($var, $exit=true, $return=true)
{
$result = sprintf('<pre>%s</pre>', print_r($var, true));
if($exit)
{
echo $result;
exit;
}
if($return)
{
return $result;
}
echo $result;
}
因此用法如下:
$obj = new StdClass();
$str = \Utils\var_dump($obj, false);
//do domething with $str
echo $str; //or use second false
最坏情况:runkit_function_redefine()
请记住,这是邪恶。你不应该那样做,因为重新定义违背了功能和定义的原因。这是一个全球性的副作用,你应该避免这种行为。
答案 1 :(得分:1)
您可以使用override_function
:http://www.php.net/manual/en/function.override-function.php替换var_dump
功能的行为。如果您想在所有网站中添加这段代码,可以将其放在php.ini
文件中:
php_value auto_prepend_file /path/to/file_where_you_override_function.php