__autoload + рекурсия - Visavi.net https://visavi.net/ RSS - Visavi.net https://visavi.net/assets/img/images/logo_small.png RSS - Visavi.net https://visavi.net/ [email protected] (admin) [email protected] (admin) Thu, 14 Nov 2024 09:58:37 +0300 1. <strong>JaKazanova</strong>, запустил твой код, все нормально работает. Наверное, проблема в константе AC_PHP. Я для теста присвоил ей значение &#039;./&#039;. 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"> &lt;?php function autoload($dir, $class) { static $return = false; if(is_dir($dir) &amp;&amp; $dire = scandir($dir)) { foreach($dire as $file) { if($file == &#039;.&#039; || $file == &#039;..&#039;) continue; elseif(is_dir($dir.&#039;/&#039;.$file)) autoload($dir.&#039;/&#039;.$file, $class); elseif(is_file($dir.&#039;/&#039;.$file) &amp;&amp; substr(basename($file), 0, stripos(basename($file), &#039;.&#039;)) == $class) $return = $dir.&#039;/&#039;.$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); } ?&gt; </pre> При тесте функции autoload(dir, class) вне функции автозагрузки, всё работает и находит что, надо. Но, стоит лишь поместить вызов функции autoload(dir, class) в тело функции __autoload(class) как, в дуг откуда ни возьмись, появляется куча ошибок. Типа не найден тот и тот класс. <br> После, в теле функции __autoload(class) пишу следующие строки<br> <pre class="prettyprint"> &lt;?php If(!function_exists(‘autoload’)) Exit(‘Таки нет’); else exit(‘Таки да’); ?&gt; </pre> Вылезла строчка “Таки да”. Получается функция должна работать но, не работает. <br> В чем дело, не подскажите. За ранее благодарен Вам, спасибо https://visavi.net/topics/38870/645502 __autoload + рекурсия Момору Wed, 04 Sep 2013 21:56:14 +0400 Сообщения https://visavi.net/topics/38870/645502