Использование магической функции __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, время: 15:28. |