Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Использование магической функции __autoload() (https://javascript.ru/forum/server/19248-ispolzovanie-magicheskojj-funkcii-__autoload.html)

romantik2011 29.07.2011 18:43

Использование магической функции __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>";
  }
}

?>


Класс А находит, а класс В нет, как быть?

ваый 29.07.2011 19:03

Крутой из тебя программер выйдет, сразу видно. А где у тебя класс B?

romantik2011 29.07.2011 19:16

Всё понял ,спасибо. Скажите, а если например у меня 500 классов, все называются так: название.class.php
не будет ли это вредно столько подключить? Может на что-то влияет или лишняя память расходуется?

ваый 29.07.2011 19:23

Ну, конечно, влияет, конечно, расходуется.
Но ты же их будешь подключать по необходимости, если используешь __autoload, а не все сразу. Зачем тебе все 500 сразу подключать. Если хочешь посмотреть, как это будет, запусти проект на zend фреймворке, вот так эта проблема ярко выражена, множество подключаемых файлов.

romantik2011 29.07.2011 19:27

Значит если объект создам только тогда класс подключится из множества классов, а если объект не создам, тогда и файл не подключится через __autoload()?

ваый 29.07.2011 19:37

Точнее, при попытке создать объект будет вызвана твоя функция __autoload. А внутри ты уже что хочешь делай, подключи файл, например.

Kolyaj 30.07.2011 12:07

romantik2011,
а вы весь курс PHP на форум выносить будете, вместо того, чтобы мануал прочитать?

tenshi 30.07.2011 13:56

лучше юзать это: http://www.php.net/manual/en/functio...d-register.php


Часовой пояс GMT +3, время: 21:07.