#1 2010.11.05 20:56

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Глюки с __autoload

Код:

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))
{
...
}

Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#2 2010.11.05 21:21

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Глюки с __autoload

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

Неактивен

#3 2010.11.05 21:23

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Глюки с __autoload

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


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#4 2010.11.05 21:31

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 805
Карма: 11
Профиль Веб-сайт

Re: Глюки с __autoload

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


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#5 2010.11.05 21:43

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 805
Карма: 11
Профиль Веб-сайт

Re: Глюки с __autoload

только что проверил, и действительно файл подключается только единожды!
Добавлено спустя   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';}?>

Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#6 2010.11.05 21:55

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Глюки с __autoload

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

Неактивен

#7 2010.11.05 22:35

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Глюки с __autoload

Код:

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

=>

Код:

1
some

Оо


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#8 2010.11.05 22:41

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 805
Карма: 11
Профиль Веб-сайт

Re: Глюки с __autoload

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


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#9 2010.11.05 22:44

Morgan
Участник
Зарегистрирован: 2009.03.31
Сообщений: 333
Карма: 10
Профиль Веб-сайт

Re: Глюки с __autoload

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


Натан ротшильд :
Кто владеет информацией, тот владеет миром

Неактивен

#10 2010.11.05 23:02

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: Глюки с __autoload

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

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.013 s