Хочу загрузить автоматически 2 класса, используя функцию автолоад, не грузятся чего-то. Все 3 файла: index.php, A.php, B.php находятся в одной папке www Вот файл index.php Код (Text): <?php function __autoload($name_class){ echo $name_class.'.php'; } $obj = new A(); $obj = new B(); ?> Файл A.php Код (Text): <?php class A{ public function hi(){ echo 'Hello file 1.php'; } } ?> Файл B.php Код (Text): <?php class B{ public function hi(){ echo 'Hello file 2.php'; } } ?> Ошибка: Код (Text): A.php Fatal error: Class 'A' not found in D:\server\super-php\test.ru\www\index.php on line 6
Код (Text): function __autoload($name_class){ echo $name_class.'.php'; } ну наверно все же не echo а include )))
А в чем разница от того кода, если писать так? Вот глянул в документации, только работает также, что просто __autoload что spl_autoload_register, а разница в чем такого хода? Код (Text): <?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(); ?>
Он спрашивает в чем разница __autoload и spl. Сначала был __autoload, потом сделали spl_*. __autoload остался из соображений совместимости. Использовать лучше spl, так как он позволяет делать несколько автолоадов, что очень важно как только вы начинаете использовать чужие библиотеки - каждая подключает свой автолоад и живет.