如何在多个文件中使用PHP Autoloader?

问题描述 投票:0回答:1

我目前正在尝试通过自动加载器替换项目中的require和require_once。我正在使用MVC模型,需要自动加载很多文件。

File1:我的自动装带器类/函数如下:

<?php

class Autoloader {

    static public function loadEverything() {

        $root = realpath($_SERVER["DOCUMENT_ROOT"]);
        require_once $root . "/src/Model/Device.php";
        require_once $root . "/src/Model/Employee.php";
        require_once $root . "/src/Model/User.php";
        require_once $root . "/src/Controller/Controller.php";
    }

}

File2:和我使用此文件的文件看起来像这样:

$root = realpath($_SERVER["DOCUMENT_ROOT"]);
require_once $root . "/src/Model/Autoloader.php";
spl_autoload_register('Autoloader::loadEverything');

但是那不起作用。如何在File2中激活该自动加载?我不明白感谢您的帮助。

php autoloader
1个回答
1
投票

这是您要自动加载课程时要做的事情:

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

spl_autoload_register('my_autoloader');

如果要加载其他内容,可以编写一个新函数,将所有require_once内容放入该函数中。

此作品:

class Autoloader {

    static public function loadEverything() {
        $root = realpath($_SERVER["DOCUMENT_ROOT"]);

        //Autoloading classes
        spl_autoload_register(function ($class) {
            $root . 'Model/' . $class . '.php';
        });

        //Manually load needed files
        require_once $root . "/src/Model/Device.php";
        require_once $root . "/src/Model/Employee.php";
        require_once $root . "/src/Model/User.php";
        require_once $root . "/src/Controller/Controller.php";
    }

}

Autoloader::loadEverything();
© www.soinside.com 2019 - 2024. All rights reserved.