Доброго времени суток, уважаемые форумчане.
Сегодня столкнулся с проблемой создания функции __autoload с рекурсивным поиском классов по вложенным директориям.
<?php
function autoload($dir, $class)
{
static $return = false;
if(is_dir($dir) && $dire = scandir($dir))
{
foreach($dire as $file)
{
if($file == '.' || $file == '..')
continue;
elseif(is_dir($dir.'/'.$file))
autoload($dir.'/'.$file, $class);
elseif(is_file($dir.'/'.$file) && substr(basename($file), 0, stripos(basename($file), '.')) == $class)
$return = $dir.'/'.$file;
}
unset($dire);
}
return $return;
}
function __autoload($class)
{
$dir = substr(AC_PHP, 0, strlen(AC_PHP) - 1);
if($require = autoload($dir, $class))
include_once($require);
}
?>
При тесте функции autoload(dir, class) вне функции автозагрузки, всё работает и находит что, надо. Но, стоит лишь поместить вызов функции autoload(dir, class) в тело функции __autoload(class) как, в дуг откуда ни возьмись, появляется куча ошибок. Типа не найден тот и тот класс.
После, в теле функции __autoload(class) пишу следующие строки
<?php
If(!function_exists(‘autoload’))
Exit(‘Таки нет’);
else exit(‘Таки да’);
?>
Вылезла строчка “Таки да”. Получается функция должна работать но, не работает.
В чем дело, не подскажите. За ранее благодарен Вам, спасибо
Changed: Момору (04.09.2013 / 21:57)