当前位置: 首页 > 后端技术 > PHP

通过自己的PHP代码实现var_dump()方法

时间:2023-03-29 14:06:47 PHP

个人学习笔记核心源码如下:/***print*@paramarray...$params*@authorklinson*/functioninfo(...$params){foreach($paramsas$param){info_item($param);}}/***打印单个变量*@param$param*@paramint$i*@authorklinson*/functioninfo_item($param,$i=0){switch(gettype($param)){case'array':info_array($param,$i);休息;case'object':info_object($param,$i);休息;case'boolean':echo"bool(".($param?"true":"false").")";休息;case'integer':echo"int({$param})";休息;case'string':echo"string({$param})";休息;case'double':echo"float({$param})";休息;case'null':echo'null';休息;case'资源':echo'资源';休息;默认lt:echo'未知类型';休息;}echoPHP_EOL;}/***打印数组*@param$param*@paramint$i*@authorklinson*/functioninfo_array($param,$i=0){//leading空间$space='';$num=$i;while($num){$space.='';$num--;}echo'array['.count($param).']:{'.PHP_EOL;foreach($paramas$key=>$item){echo$space."[{$key}]=>";info_item($item,$i+1);}echo$space.'}';}/***打印对象*@param$param*@paramint$i*@authorklinson*/functioninfo_object($param,$i=0){//前导空格$space='';$num=$i;while($num){$space.='';$num--;}echo'object('.get_class($param).'['.count($param).']):{'.PHP_EOL;foreach($paramas$key=>$item){echo$space."[{$key}]=>";info_item($item,$i+1);}echo$space.'}';}测试代码:$a=1.11;$b='a';$c=[$a,$b];$d=newstdClass();$d->aaa='aaa';$d->bb=$c;info($a,$b,$c,$d);效果如下: