Когда я вызываю любую функцию без рекурсии (класс загружается SPL) - все нормально, но если эта функция вызывает сама себя (рекурсия) - ничего не работает.
Если я использую функцию без автозагрузчика - все работаетотличный.Я думаю, что это происходит потому, что объект класса не существует, как в случае с магическими методами: вы должны использовать __callStatic
, а не __call
с абстрактным использованием класса, я пытался сделать эту функцию статической oO, но ничего больше не работает.
Есть идеи, как можно использовать рекурсию через автозагрузчик?
Например, эта функция из 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)
работает.