Morgan » 2010.11.05 20:56

Код:

1
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 после проверки, существует ли класс в другом месте

Код:

1
2
3
4
if(!class_exists($class))
{
...
}
Gemorroj » 2010.11.05 21:21

если мы попали в автолоад, то класс уже не найден

Morgan » 2010.11.05 21:23

нет.
В совершенно другом месте, распологается код, проверяющий, определен ли класс "$class".
и после этого, каким то образом в ход вступает __autoload

Nu3oN » 2010.11.05 21:31

на сколько я знаю автозагрузка подключает единожды, а потом уже выдает статический результат

Nu3oN » 2010.11.05 21:43

только что проверил, и действительно файл подключается только единожды!
Добавлено спустя   7 минут  37 секунд:
index.php

Код:

1
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

Код:

1
span style="color: #0000BB"><?phpClass MyClass { var $hello = 'hello world';}?>
Gemorroj » 2010.11.05 21:55

так да, единожды, естессно. другое дело, что на class_exists автолоадер вроде как не должен срабатывать...

Morgan » 2010.11.05 22:35

Код:

1
span style="color: #0000BB"><?phpfunction __autoload($class){echo $class;}class_exists('some');?>

=>

Код:

1
some

Оо

Nu3oN » 2010.11.05 22:41

получается class_exists идентичен __autoload только разница в том что автолоад пользовательская функция? 0_о
З.ы или как то так :/
Добавлено спустя   2 минуты  46 секунд:
короче я понял что я ничего не понял гг

Morgan » 2010.11.05 22:44

да да, вот что дает пропуск манов ;/
http://ru2.php.net/class_exists

Gemorroj » 2010.11.05 23:02

хе-хе)) точно) достаточно было просто заглянуть в мануал)))