__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 |
Эх, упустил, нужен require_once
|
А в чем разница от того кода, если писать так? Вот глянул в документации, только работает также, что просто __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();
?>
|
spl_autoload_register позволяет зарегистрировать несколько автолоадеров. актуально когда подключаешь несколько библиотек и у каждой свой метод загрузки
|
| Часовой пояс GMT +3, время: 08:43. |