2013-05-27 40 views
0

因此,这里是我的自动加载 -不明白为什么自动加载不工作

function __autoload($classname){ 
    include $classname.'.php'; 
} 

我万一使用DOCROOT也试过....

function __autoload($classname){ 
    define('DOCROOT', dirname(__FILE__)); 
    include DOCROOT.'/'.$classname.'.php'; 
} 

但是,当它遇到的PatentAssignment类,它说,它无法找到该类的定义...

然而,如果我有一个

include 'PatentAssignment.php'; 

在将使用它的类的构造函数中,一切工作正常。不知道发生了什么事。事实上,它甚至不会调用自动加载,只是会去弄糊涂做什么。

+1

所以在每次调用你定义一个常数? – zerkms

+1

这里没有很多信息... __autoload函数在哪里?是文件中包含的文件是否试图实例化对象?是与你的类文件在同一目录中的文件?在zerkms'commment上延伸的 – HorusKol

+0

:为什么不只是使用'include __DIR__。 '/'。 $ classname。 '.php';' – HorusKol

回答

1

是什么构造的样子(与包括)? 将自动加载代码放在所有类定义之前,最好在初始化php文件的顶部。 尝试调试:

function __autoload($classname) { 
    echo 'looking for ' . $classname . ' in ' . getcwd(); 
    include $classname.'.php'; 
} 
  1. http://php.net/manual/en/function.getcwd.php

获取当前工作目录。你的所有文件都在同一个文件夹中吗?

  1. http://de3.php.net/manual/en/function.spl-autoload.php

使用spl_autoload代替:

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

试试这个:

spl_autoload_register(function($class) { 
    //your function here 
    return class_exists($class, false); 
    }); 
相关问题