0

所以这是我的自动加载 -

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

我也尝试使用 DOCROOT 以防万一......

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

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

然而,如果我有一个

include 'PatentAssignment.php';

在将使用它的类的构造函数中,一切正常。不知道发生了什么。事实上,它甚至没有调用自动加载,只是对要做什么感到困惑。

4

3 回答 3

1

__autoload()不应该是类的成员方法 - 它应该是全局命名空间中的独立函数。

http://php.net/manual/en/language.oop5.autoload.php

于 2013-05-27T23:14:42.993 回答
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');
  });
于 2013-05-27T23:14:45.017 回答
0

尝试这个:

    spl_autoload_register(function($class) {
    //your function here
    return class_exists($class, false);
   });
于 2013-05-27T23:34:10.923 回答