spl_autoload_register()的问题

时间:2013-12-24 08:58:45

标签: php

我的某个php应用程序确实存在问题。首先,我的测试环境在安装了PHP的IIS上运行。我有以下代码:

<?php
// define autoloader for all php classes
$ps = PATH_SEPARATOR; // add default path seperator to a variable
set_include_path(get_include_path().$ps."classes/adapter/".$ps."classes/common/".$ps."classes/manager/".$ps."classes/mapper/".$ps."classes/object/".$ps."classes/viewobject/"); // add classes directory to include paths
spl_autoload_extensions(".class.php"); // add .class.php as extension for autoloading classes
spl_autoload_register(); //start the autoloading procedure
?>

到目前为止一切顺利,因为这是应该的。现在我想将该页面移动到使用Apache和PHP的提供程序,我看到的是以下错误消息:

Fatal error: spl_autoload() [<a href='function.spl-autoload'>function.spl-autoload</a>]: Class pageLoader could not be loaded 

你们可能知道我做错了什么吗?

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:1)

看起来我发现了这个问题..我知道linux是区分大小写的,但无论出于什么原因,类的文件名必须是小写字母。

在我的例子中,如果你打电话

$test = new pageLoader();

目录中的文件需要名称为“pageloader.class.php”

干杯

答案 1 :(得分:0)

您是否忘记定义加载程序功能?

// Autoloader for Classes
spl_autoload_register(null, false); // Nullify any existing autoloads
spl_autoload_extensions('.php, .class.php'); // Specify extensions that may be loaded

function class_loader($class) // Class loader
{
    $filename = strtolower($class) .'.class.php';
    $file = ROOT .'/classes/'. $filename;

    if(!is_readable($file))
        return false;

    require_once $file;
}

spl_autoload_register('class_loader'); // Register loader function(s)
// End Autoloader

请注意,上面的代码假定已定义的常量ROOT