楚奇游戏网
您的当前位置:首页php如何实现var_dump功能

php如何实现var_dump功能

来源:楚奇游戏网


php实现“var_dump”功能的方法:首先创建一个php示例文件;然后定义一个reconstructDump方法;接着通过for循环的方式实现“var_dump”功能即可。

推荐:《PHP视频教程》

PHP实现一个类似var_dump函数的功能!

<?php
 function reconstructDump() {
 $args = func_num_args();
 for($i = 0;$i < $args; $i ++) {
 $param = func_get_arg($i);
 switch(gettype($param)) {
 case 'NULL' :
 echo 'NULL';
 break;
 case 'boolean' :
 echo ($param ? 'bool(true)' : 'bool(false)');
 break;
 case 'integer' :
 echo "int($param)";
 break;
 case 'double' :
 echo "float($param)";
 break;
 case 'string' :
 dumpString($param);
 break;
 case 'array' :
 dumpArr($param);
 break;
 case 'object' :
 dumpObj($param);
 break;
 case 'resource' :
 echo 'resource';
 break;
 default :
 echo 'UNKNOWN TYPE';
 break;
 }
 }
 }
 
 
function dumpString($param) {
 $str = sprintf("string(%d) %s",strlen($param),$param);
 echo $str;
}
 
function dumpArr($param) {
 $len = count($param);
 echo "array($len) {
";
 foreach($param as $key=>$val) {
 if(is_array($val)) {
 dumpArr($val);
 } else {
 echo sprintf('["%s"] => %s(%s)',$key,gettype($val),$val);
 }
 }
 echo "}
";
}
 
function dumpObj($param) {
 $className = get_class($param);
 $reflect = new ReflectionClass($param);
 $prop = $reflect->getDefaultProperties();
 echo sprintf("Object %s #1(%d) {
",$className,count($prop));
 foreach($prop as $key=>$val) {
 echo "["$key"] => ";
 reconstructDump($val);
 }
 echo "}";
}
 
class MyClass
{
 protected $_name;
 function test()
 {
 echo "hello";
 }
}
 
$str = "test";
reconstructDump(new MyClass(),$str);
echo "
";
$arr2 = array(
 "1" => "Ddaddad",
 "one" => array("two" => "Dddd" ),
 "three" => 1
);
reconstructDump($arr2); 
reconstructDump(1,true,null);
exit;
显示全文