PHP自动加载器问题

时间:2016-10-04 18:31:43

标签: php composer-php autoloader

我有一个非常旧的应用程序脚本,实际上使用下面的代码片段加载带有类名的控制器,模型和实体

function __autoload($className)
{   
    list($filename , $suffix) = explode('_' , $className);  

    switch (strtolower($suffix))
    {   
        case 'model':

            $folder = '/model/';            
            $suffix = BIZ_SUFFIX;

        break;  

        case 'dao':

            $folder = '/entity/';   
            $suffix = DAO_SUFFIX;           

        break;      
    }   

    $file = SITE_PATH . $folder . strtolower($filename) . $suffix .'.php';      
    if (file_exists($file))
    {       
        include_once($file);        
    }
    else
    {       
        die("File '$filename' containing class '$className' not found in '$folder'.");  
    }
}

现在我在集成任何第三方自动加载器时遇到问题,即使是使用composer autoload也是如此。

我甚至尝试过以下方法

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

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

spl_autoload_register('my_autoloader');

错误消息:

Fatal error: Class 'Template_Model' not found

1 个答案:

答案 0 :(得分:0)

如果您使用spl_autoload_register,则不会调用__autoload函数。

__autoload重命名为其他内容,例如。 old_autoload。并在自动加载器spl_autoload_register('old_autoload');

中注册