Когда я вызываю любую функцию без рекурсии (класс загружается SPL) - все нормально, но если эта функция вызывает себя (рекурсия) - ничего не работает.Функция вызова через self (рекурсия) не работает через автозагрузчик SPL
Если я использую функцию без автозагрузчика - все отлично работает. Я думаю, что это происходит потому, что объект класса не существует, например, с помощью магических методов: вы должны использовать __callStatic
, а не __call
с абстрактным использованием класса, я пытался сделать эту функцию статической oO, но ничего не работает снова.
Любые идеи, как можно использовать рекурсию через автозагрузчик?
Например 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)
работ.
КОД !! Отправьте свой код или мы не сможем вам помочь – mowwwalker
На php.net существует множество функций. Фактически, все они. Отправьте код, который вы используете, который не работает – mowwwalker
Что значит автозагрузчик? ПОСЛЕ ВАШЕГО КОДА. Что вы работаете, чего вы ожидаете и что происходит? – mowwwalker