X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Использование магической функции __autoload()
romantik2011
romantik2011
Topic Starter сообщение 29.7.2011, 18:43; Ответить: romantik2011
Сообщение #1


Прочитал здесь: http://phpclub.ru/faq/PHP5/Autoload
что в PHP5 перед тем как создать объект несуществующего класса, идёт попытка вызова __autoload(), который должен попытаться подключить такой класс, которого на самом деле нету.

Вот в одной директории, у меня лежит 3 файла:
index.php
[PHP]
<?php
function __autoload($name){
include $name.".class.php";
echo "Ищем класс $name";
}

$ob1 = new A();
$ob1->son();
$ob2 = new B();
$ob2->fanta();

?>
[/PHP]
A.class.php
[PHP]
<?php

class A{
public function son(){
echo "<br />Вызвана функция <u>Сон</u>, класса <u>А</u>";
}
}

?>
[/PHP]

B.class.php
[PHP]
<?php

class A{
public function fanta(){
echo "<br />Вызвана функция <u>Fanta</u>, класса <u>B</u>";
}
}

?>
[/PHP]

Класс А находит, а класс В нет, как быть?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 29.7.2011, 18:48; Ответить: alexdrob
Сообщение #2


(romantik2011 @ 29.7.2011, 21:43) *
Класс А находит, а класс В нет, как быть?

назвать класс B
[PHP]class B[/PHP]
?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
romantik2011
romantik2011
Topic Starter сообщение 29.7.2011, 18:49; Ответить: romantik2011
Сообщение #3


Точно, спасибо. Скажите, вот всегда надо писать? ".class.php";
я имею ввиду ключевое слово class, а файлы обязательно называть?
<Название>+<.class>+<.php>?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 29.7.2011, 18:49; Ответить: alexdrob
Сообщение #4


нет
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
romantik2011
romantik2011
Topic Starter сообщение 29.7.2011, 18:52; Ответить: romantik2011
Сообщение #5


Вот так не хочет искать include $name."*.php" и так тоже не ищет include $name."A.class.php";
и ещё момент, зачем конкатенировать, вот с этим $name ?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Letmetouchyou
Letmetouchyou
сообщение 29.7.2011, 19:00; Ответить: Letmetouchyou
Сообщение #6


(romantik2011 @ 29.7.2011, 21:52) *
include $name."*.php"

что еше за звездочка?
в функцию __autoload просто передаетсья имя класса, который не сущесвует. А вы в фукнции пишите логику подключения класса.
называть файл, и находиться он может где угодн, лиш бы был досутпен для подлключения.
$name - содержит, как говрил выше, имя не сущесвуюшего клссса.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
romantik2011
romantik2011
Topic Starter сообщение 29.7.2011, 19:16; Ответить: romantik2011
Сообщение #7


Всё понял ,спасибо. Скажите, а если например у меня 500 классов, все называются так: название.class.php
не будет ли это вредно столько подключить? Может на что-то влияет или лишняя память расходуется?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 29.7.2011, 19:32; Ответить: alexdrob
Сообщение #8


(romantik2011 @ 29.7.2011, 22:16) *
не будет ли это вредно столько подключить?

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

а вот сразу 500 классов подключить самому, это будет вредно, особенное если используются только 50 а загрузил 500

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Новости (рерайт, использование нескольких источников)
Контент для новостных ресурсов разных тематик
24 home 11440 8.3.2017, 15:28
автор: home
Открытая тема (нет новых ответов) Ахтунг! За использование партнерской программы меня обвиняют в нарушении торговой марки и угрожают санкциями
14 jansen 7035 20.8.2013, 19:43
автор: jansen
Открытая тема (нет новых ответов) Smarty и собственные функции
Как реализовать?
3 RussiaStudent 8552 12.12.2009, 18:41
автор: ZiTosS


 



RSS Текстовая версия Сейчас: 29.3.2024, 6:18
Дизайн