在Ubuntu上的spl_autoload_register

时间:2018-02-13 10:39:39

标签: php class ubuntu autoload

我正在尝试使用PHP中的 spl_autoload_register 来自动加载项目的/ lib / classes /目录中的类。

将其包含在我的启动文件中

require_once('lib/classes/Autoloader.php');
spl_autoload_register('Autoloader::loader');

Inside Autoloader.php

class Autoloader
{
    public static function loader($class)
    {
        $filename = strtolower($class) . '.php';
        $file ='lib/classes/' . $filename;
        if (!file_exists($file)) {
            echo 'Class '.$class. ' not found'.PHP_EOL;
            return false;
        }
        echo 'Including class '.$class.PHP_EOL;
        include $file;
    }
}

这完全适用于Windows IIS并加载lib / classes /中的类但是在Ubuntu上它找不到类,所以我认为Ubuntu包含文件路径的方式有所不同?

我有什么想法可以解决这个问题,以便在Windows和Ubuntu上运行吗?

1 个答案:

答案 0 :(得分:0)

您始终可以使用绝对路径,但为了保持一致性,您可以在引导文件中使用函数dirname,并假设文件夹lib与引导文件位于同一级别。

define('ROOT_FOLDER',dirname(__FILE__));
require_once(ROOT_FOLDER.'/lib/classes/Autoloader.php');
spl_autoload_register('Autoloader::loader');