Вы не зашли.
Главная » PHP » Глюки с __autoload
#1. Morgan Off (10)
Участник
2010.11.05 20:08
Код:
span style="color: #0000BB"><?php function __autoload($class_name) { // подгружаем класс if(!class_exists($class_name)) { if(file_exists(MF_DIR_CLASSES.$class_name.'.php')) { require_once MF_DIR_CLASSES.$class_name.'.php'; } else { trigger_error('Файл "'.MF_DIR_CLASSES.$class_name.'.php" не существует', E_USER_ERROR); } } return true; }?>
почему то вызывается __autoload после проверки, существует ли класс в другом месте
Код:
if(!class_exists($class))
{
...
}
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#2. Gemorroj Off (107)
Administrator
2010.11.05 21:09
если мы попали в автолоад, то класс уже не найден
#3. Morgan Off (10)
Участник
2010.11.05 21:09
нет.
В совершенно другом месте, распологается код, проверяющий, определен ли класс "$class".
и после этого, каким то образом в ход вступает __autoload
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#4. Nu3oN Off (11)
Moderator
2010.11.05 21:09
на сколько я знаю автозагрузка подключает единожды, а потом уже выдает статический результат
Я буду лучше голоден, но между креслом и рулем и на дороге.
#5. Nu3oN Off (11)
Moderator
2010.11.05 21:09
только что проверил, и действительно файл подключается только единожды!
Добавлено спустя   7 минут  37 секунд:
index.php
Код:
span style="color: #0000BB"><?php$i = 1;function __autoload($c){ GLOBAL $i; ++$i; include_once('classes/'$c.'.php');}$a = new MyClass;echo $a -> hello.':'.$i.'<br>';$b = new MyClass;echo $b -> hello.':'.$i;?>
MyClass.php
Код:
span style="color: #0000BB"><?phpClass MyClass { var $hello = 'hello world';}?>
Я буду лучше голоден, но между креслом и рулем и на дороге.
#6. Gemorroj Off (107)
Administrator
2010.11.05 21:09
так да, единожды, естессно. другое дело, что на class_exists автолоадер вроде как не должен срабатывать...
#7. Morgan Off (10)
Участник
2010.11.05 22:10
Код:
span style="color: #0000BB"><?phpfunction __autoload($class){echo $class;}class_exists('some');?>
=>
Код:
some
Оо
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#8. Nu3oN Off (11)
Moderator
2010.11.05 22:10
получается class_exists идентичен __autoload только разница в том что автолоад пользовательская функция? 0_о
З.ы или как то так hmm
Добавлено спустя   2 минуты  46 секунд:
короче я понял что я ничего не понял гг
Я буду лучше голоден, но между креслом и рулем и на дороге.
#9. Morgan Off (10)
Участник
2010.11.05 22:10
да да, вот что дает пропуск манов ;/
http://ru2.php.net/class_exists
Натан ротшильд :
Кто владеет информацией, тот владеет миром
#10. Gemorroj Off (107)
Administrator
2010.11.05 23:11
хе-хе)) точно) достаточно было просто заглянуть в мануал)))
Страниц: 1
Главная
WEB
PunBB Mod v0.6.2
0.012 s