关于ecshop中的函数addslashes_deep_obj一点改进

2016-07-07 15:03 来源:www.chinab4c.com 作者:ecshop专家



在ecshop的includes/lib_base.php中:

原函数:
/**
* 将对象成员变量或者数组的特殊字符进行转义
*
* @accesspublic
* @param mix$obj对象或者数组
* @authorXuan Yan
*
* @returnmix对象或者数组
*/
function addslashes_deep_obj($obj)
{
if (is_object($obj) == true)
{
foreach ($obj AS $key => $val)
{
$obj->$key = addslashes_deep($val);
}
}
else
{
$obj = addslashes_deep($obj);
}
return $obj;
}

此函数最好改成

function addslashes_deep_obj($obj)
{
if (is_object($obj) == true)
{
foreach ($obj AS $key => $val)
{
$obj->$key = is_object($val)?addslashes_deep_obj($val):addslashes_deep($val);
}
}
else
{
$obj = addslashes_deep($obj);
}
return $obj;
}

否则当json对象的成员变量是一个对象时将会产生解析错误,一个小bug,可能对开发中遇到此问题的有些帮助

回答:
谢谢LZ的提醒, 可是具体后果是怎样呢?

支持 经验分享!
之前就遇到过这个问题!