使用spl_autoload_register时找不到类

时间:2014-05-07 23:33:59

标签: php

我已将spl_autoload_register函数放在index.php(根目录)文件中: 我正在使用spl_autoload_register,如下所示:

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

但是在处理表单(/processing/form_process.php)时,我收到错误:

  

致命错误:在第2行的G:\ xampp \ htdocs \ critwild \ processing \ form_process.php中找不到“DBi”类

在第2行,我正在使用$ conn = new DBi创建新的DBi对象(来自我的类​​目录的DBi.php);

表单操作页面与index.php不在同一目录中(它位于/processing/form_process.php中)。将spl_autoload_register命令复制到表单处理页面并更改包含路径(到'../classes/' . $class . '.php')时,错误消失。

如果可能的话,有人会对我如何在index.php页面中包含它而不是将其复制到多个页面有任何想法吗?

我当前的index.php页面,包括页眉,页脚和内容(目前只有register.php)页面:

<?php 
include("layout/header.php");
spl_autoload_register(
function($class) {
        include 'classes/' . $class . '.php';
    }
);
$p_req = "register";
if ($p_req == "register") {
    include("content/register.php");
}
include("layout/footer.php");
?>

My directory structure:
[/]
 index.php

   [classes]
     DBi.php

   [processing]
     form_process.php

   [content]
     register.php

1 个答案:

答案 0 :(得分:0)

呸!我以为我读到spl_autoload_register每个会话只需要加载一次,而我似乎错了。它需要包含在每个需要使用您的类的页面中。