bas*_*abi 5 php methods recursion static
是否可以对静态方法进行递归?
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
执行时我收到此错误:
严重性:警告
消息:array_map() 期望参数 1 为有效回调,未找到函数“objectToArray”或函数名称无效。
谢谢!
您可以递归调用静态方法。例如,以下代码可以正常工作:
<?php
class MyClass{
public static function test($count)
{
if ($count < 10) {
$count++;
self::test($count);
echo $count;
}
}
}
MyClass::test(0);
Run Code Online (Sandbox Code Playgroud)
尝试这个
return array_map(['Helpers', 'objectToArray'], $obj);
Run Code Online (Sandbox Code Playgroud)
array_map 许可callable类型。
你可以尝试用魔法常数
return array_map([__CLASS__, __METHOD__], $obj);
Run Code Online (Sandbox Code Playgroud)
或者使用self
return array_map([self, __METHOD__], $obj);
Run Code Online (Sandbox Code Playgroud)