Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.07.2011, 18:43
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

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

?>


Класс А находит, а класс В нет, как быть?
Ответить с цитированием
  #2 (permalink)  
Старый 29.07.2011, 19:03
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Крутой из тебя программер выйдет, сразу видно. А где у тебя класс B?
Ответить с цитированием
  #3 (permalink)  
Старый 29.07.2011, 19:16
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

Всё понял ,спасибо. Скажите, а если например у меня 500 классов, все называются так: название.class.php
не будет ли это вредно столько подключить? Может на что-то влияет или лишняя память расходуется?
Ответить с цитированием
  #4 (permalink)  
Старый 29.07.2011, 19:23
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Ну, конечно, влияет, конечно, расходуется.
Но ты же их будешь подключать по необходимости, если используешь __autoload, а не все сразу. Зачем тебе все 500 сразу подключать. Если хочешь посмотреть, как это будет, запусти проект на zend фреймворке, вот так эта проблема ярко выражена, множество подключаемых файлов.
Ответить с цитированием
  #5 (permalink)  
Старый 29.07.2011, 19:27
Аспирант
Отправить личное сообщение для romantik2011 Посмотреть профиль Найти все сообщения от romantik2011
 
Регистрация: 20.07.2011
Сообщений: 50

Значит если объект создам только тогда класс подключится из множества классов, а если объект не создам, тогда и файл не подключится через __autoload()?
Ответить с цитированием
  #6 (permalink)  
Старый 29.07.2011, 19:37
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Точнее, при попытке создать объект будет вызвана твоя функция __autoload. А внутри ты уже что хочешь делай, подключи файл, например.
Ответить с цитированием
  #7 (permalink)  
Старый 30.07.2011, 12:07
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

romantik2011,
а вы весь курс PHP на форум выносить будете, вместо того, чтобы мануал прочитать?
Ответить с цитированием
  #8 (permalink)  
Старый 30.07.2011, 13:56
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

лучше юзать это: http://www.php.net/manual/en/functio...d-register.php
__________________
.ня
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическое содержимое функции alfmaster Общие вопросы Javascript 2 28.05.2011 17:10
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21
использование функции larpug Общие вопросы Javascript 2 30.03.2010 22:30
Подскажите, как работает простой код (замыкание функции)? Dotod Общие вопросы Javascript 5 02.12.2009 04:03
Использование одной функции для элементов с разными ID Ferroks Общие вопросы Javascript 10 11.09.2009 08:51