是否可以对静态方法进行递归?
class Helpers {
public static function objectToArray($obj) {
if (is_object($obj)) {
$obj = get_object_vars($obj);
}
if (is_array($obj)) {
return array_map(__FUNCTION__, $obj);
}
else {
return $obj;
}
}
}
我执行时遇到此错误:
严重性:警告
消息:array_map()期望参数1是有效的回调,函数' objectToArray'未找到或无效的功能名称。
谢谢!
答案 0 :(得分:3)
试试这个
return array_map(['Helpers', 'objectToArray'], $obj);
array_map允许callable
类型。
您可以使用magic constants
进行尝试return array_map([__CLASS__, __METHOD__], $obj);
或使用self
return array_map([self, __METHOD__], $obj);
答案 1 :(得分:2)
您应该使用:
return array_map('self::objectToArray', $obj);
//或
return array_map(array(self, 'objectToArray'), $obj);
为您提供替代解决方案(将对象编码为json字符串,然后将其解码为数组):
class Helpers {
public static function objectToArray($obj) {
return json_decode(json_encode($obj), true);
}
}