Использование магической функции __autoload()
Прочитал здесь: http://phpclub.ru/faq/PHP5/Autoload
что в PHP5 перед тем как создать объект несуществующего класса, идёт попытка вызова __autoload(), который должен попытаться подключить такой класс, которого на самом деле нету. Вот в одной директории, у меня лежит 3 файла: index.php <?php function __autoload($name){ include $name.".class.php"; echo "Ищем класс $name"; } $ob1 = new A(); $ob1->son(); $ob2 = new B(); $ob2->fanta(); ?> A.class.php <?php class A{ public function son(){ echo "<br />Вызвана функция <u>Сон</u>, класса <u>А</u>"; } } ?> B.class.php <?php class A{ public function fanta(){ echo "<br />Вызвана функция <u>Fanta</u>, класса <u>B</u>"; } } ?> Класс А находит, а класс В нет, как быть? |
Крутой из тебя программер выйдет, сразу видно. А где у тебя класс B?
|
Всё понял ,спасибо. Скажите, а если например у меня 500 классов, все называются так: название.class.php
не будет ли это вредно столько подключить? Может на что-то влияет или лишняя память расходуется? |
Ну, конечно, влияет, конечно, расходуется.
Но ты же их будешь подключать по необходимости, если используешь __autoload, а не все сразу. Зачем тебе все 500 сразу подключать. Если хочешь посмотреть, как это будет, запусти проект на zend фреймворке, вот так эта проблема ярко выражена, множество подключаемых файлов. |
Значит если объект создам только тогда класс подключится из множества классов, а если объект не создам, тогда и файл не подключится через __autoload()?
|
Точнее, при попытке создать объект будет вызвана твоя функция __autoload. А внутри ты уже что хочешь делай, подключи файл, например.
|
romantik2011,
а вы весь курс PHP на форум выносить будете, вместо того, чтобы мануал прочитать? |
лучше юзать это: http://www.php.net/manual/en/functio...d-register.php
|
Часовой пояс GMT +3, время: 21:07. |