__autoload + рекурсия - Visavi.net
https://visavi.net/
RSS - Visavi.nethttps://visavi.net/assets/img/images/logo_small.pngRSS - Visavi.net
https://visavi.net/
[email protected] (admin)[email protected] (admin)Thu, 14 Nov 2024 09:58:37 +03001. <strong>JaKazanova</strong>, запустил твой код, все нормально работает. Наверное, проблема в константе AC_PHP. Я для теста присвоил ей значение './'.
https://visavi.net/topics/38870/645595
__autoload + рекурсия ПетрThu, 05 Sep 2013 23:08:40 +0400Сообщенияhttps://visavi.net/topics/38870/645595За окном еще со вчерашнего вечера не погодилось, ночью шел дождь. Погода мягко говоря была зябкой и не приветливой. Под ногами мерзко чавкали лужи. Всю дорогу до дома я мечтал скорее удобно умоститься в мягкое кресло около теплого камина и с чашечкой горячего кофе вникнуть в премудрости веб программирования. Только это, можно сказать вселяло в меня надежду что, не всё ещё потеряно и день сегодняшний возможно принесет мне желаемую удачу. Но увы, она опять не шла в руки.
https://visavi.net/topics/38870/645509
__autoload + рекурсия МоморуWed, 04 Sep 2013 23:00:46 +0400Сообщенияhttps://visavi.net/topics/38870/645509Сегодня пол дня я раз за разом задавался этим вопросом но, так и не находя решения отвлекался на что то иное, более прозаичное, повседневное.
https://visavi.net/topics/38870/645505
__autoload + рекурсия МоморуWed, 04 Sep 2013 22:44:54 +0400Сообщенияhttps://visavi.net/topics/38870/645505Сделать функцию autoload статическим методом set класса autoload, тоже пробовал. Опять же, потерпел неудачу. В чём дело, не могу понять. Короче, капец<br>
<br>
<em><span style="font-size:x-small">Добавлено через 07:59 сек.</span></em><br>
Если поместить все классы в одну директорию и искать обходя циклом имена файлов, заменив при этом мою удобную структуру иерархии именованных директорий менее прогрессивной и соответственно менее удобной структурой любого типа. Казалось бы мелочь, но по банальному стечению обстоятельств именно она не дает мне двигаться в перед, эволюционировать, так сказать.
https://visavi.net/topics/38870/645503
__autoload + рекурсия МоморуWed, 04 Sep 2013 22:33:20 +0400Сообщенияhttps://visavi.net/topics/38870/645503Доброго времени суток, уважаемые форумчане. <br>
Сегодня столкнулся с проблемой создания функции __autoload с рекурсивным поиском классов по вложенным директориям. <br>
<pre class="prettyprint">
<?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);
}
?>
</pre>
При тесте функции autoload(dir, class) вне функции автозагрузки, всё работает и находит что, надо. Но, стоит лишь поместить вызов функции autoload(dir, class) в тело функции __autoload(class) как, в дуг откуда ни возьмись, появляется куча ошибок. Типа не найден тот и тот класс. <br>
После, в теле функции __autoload(class) пишу следующие строки<br>
<pre class="prettyprint">
<?php
If(!function_exists(‘autoload’))
Exit(‘Таки нет’);
else exit(‘Таки да’);
?>
</pre>
Вылезла строчка “Таки да”. Получается функция должна работать но, не работает. <br>
В чем дело, не подскажите. За ранее благодарен Вам, спасибо
https://visavi.net/topics/38870/645502
__autoload + рекурсия МоморуWed, 04 Sep 2013 21:56:14 +0400Сообщенияhttps://visavi.net/topics/38870/645502