Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2013, 17:02   #1
super-php
Пользователь
 
Регистрация: 07.03.2013
Сообщений: 37
По умолчанию __autoload()

Хочу загрузить автоматически 2 класса, используя функцию автолоад, не грузятся чего-то.
Все 3 файла: index.php, A.php, B.php находятся в одной папке www

Вот файл index.php

PHP код:
<?php
function __autoload($name_class){
    echo 
$name_class.'.php';
}

$obj = new A();
$obj = new B();
?>
Файл A.php

PHP код:
<?php
class A{
public    function 
hi(){
        echo 
'Hello file 1.php';
    }
}
?>
Файл B.php

PHP код:
<?php
class B{
public    function 
hi(){
        echo 
'Hello file 2.php';
    }
}
?>
Ошибка:
Код:
A.php
Fatal error: Class 'A' not found in D:\server\super-php\test.ru\www\index.php on line 6
super-php вне форума Ответить с цитированием
Старый 20.03.2013, 17:46   #2
super-php
Пользователь
 
Регистрация: 07.03.2013
Сообщений: 37
По умолчанию

Эх, упустил, нужен require_once
super-php вне форума Ответить с цитированием
Старый 20.03.2013, 23:05   #3
super-php
Пользователь
 
Регистрация: 07.03.2013
Сообщений: 37
По умолчанию

А в чем разница от того кода, если писать так? Вот глянул в документации, только работает также, что просто __autoload что spl_autoload_register, а разница в чем такого хода?

PHP код:
<?php

// function __autoload($class) {
//     include 'classes/' . $class . '.class.php';
// }

function my_autoloader($class) {
    include 
'classes/' $class '.class.php';
}

spl_autoload_register('my_autoloader');

// начиная с версии PHP 5.3.0 можно использовать безымянные функции
spl_autoload_register(function ($class) {
    include 
'classes/' $class '.class.php';
});



$obj1 = new A();
$obj1->hi();
$obj2 = new B();
$obj2->hi();
?>
super-php вне форума Ответить с цитированием
Старый 21.03.2013, 03:30   #4
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Google великая штука.
http://bit.ly/WEPbCB
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 21.03.2013, 21:36   #5
Notan1310
Форумчанин
 
Регистрация: 01.01.2012
Сообщений: 118
По умолчанию

_autoload может быть определена в проекте один раз. Изменить ее во время выполнения скрипта помогает spl_autoload_register

http://www.php.net/manual/ru/functio...d-register.php
Notan1310 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование магической функции __autoload() romantik2011 PHP 1 29.07.2011 19:30