我正在尝试使用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上运行吗?
答案 0 :(得分:0)
您始终可以使用绝对路径,但为了保持一致性,您可以在引导文件中使用函数dirname,并假设文件夹lib
与引导文件位于同一级别。
define('ROOT_FOLDER',dirname(__FILE__));
require_once(ROOT_FOLDER.'/lib/classes/Autoloader.php');
spl_autoload_register('Autoloader::loader');