Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   __autoload() (https://javascript.ru/forum/server/36586-__autoload.html)

super-php 20.03.2013 17:02

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

Вот файл index.php

<?php
function __autoload($name_class){
	echo $name_class.'.php';
}

$obj = new A();
$obj = new B();
?>


Файл A.php

<?php
class A{
public	function hi(){
		echo 'Hello file 1.php';
	}
}
?>


Файл B.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:47

Эх, упустил, нужен require_once

super-php 20.03.2013 23:05

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

<?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();
?>

tenshi 21.03.2013 18:21

spl_autoload_register позволяет зарегистрировать несколько автолоадеров. актуально когда подключаешь несколько библиотек и у каждой свой метод загрузки


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