【发布时间】:2012-01-25 02:30:40
【问题描述】:
当我在没有递归的情况下调用任何函数时(类由 SPL 加载) - 一切正常,但如果该函数调用自身(递归) - 没有任何作用。
如果我使用没有自动加载器的功能 - 一切都很好。我认为这是因为类的对象不存在,就像魔术方法一样:你必须使用__callStatic,而不是使用抽象类的__call,我试图让这个函数成为静态的,但没有任何效果。
任何想法如何通过自动加载器使用递归?
例如this function from php.net 在自动加载模式下不起作用:
function r_implode($glue, $pieces)
{
foreach ($pieces as $r_pieces)
{
if (is_array( $r_pieces ))
{
$r_pieces = r_implode($glue, $r_pieces);
}
else
{
$retVal[] = $r_pieces;
}
}
return implode($glue, $retVal);
}
class load
{
public static function init()
{
return spl_autoload_register(array(__CLASS__, "hook"));
}
public static function quit()
{
return spl_autoload_unregister(array(__CLASS__, "hook"));
}
public static function hook($class)
{
// echo "CLASS IS:$class<br>";
$lnk=PATH . str_replace("_", "/", $class) . ".php";
ob_start();
require $lnk;
ob_end_clean();
return $class;
}
}
因此,当我将函数添加到类工具中时,调用 tools::r_implode($a,$b); 函数不起作用,但是当我将此函数插入同一个 php 并调用 r_implode($a,$b) 时。
【问题讨论】:
-
代码!!发布您的代码,否则我们无法帮助您
-
php.net上有很多功能。事实上,所有这些。发布您正在使用但不起作用的代码
-
自动加载器是什么意思?发布您的代码。你在做什么,你在期待什么,正在发生什么?
-
对不起。但我知道代码有效,它在抽象类 class::function() 中不起作用;