用户自动加载器包含类

时间:2016-07-13 20:10:14

标签: php class autoload

我有一个看起来像这样的目录:

Directory Schema

在文件inc/class/autoload.php中,我编写了一个代码,可以自动包含所有类(Cart.class.phpDatabase.class.php)。

autoload.php

<?php

spl_autoload_register('autoload');

function autoload($class){
    require_once($class.'.php');
}

问题在于,当我在inc/class/autoload.phpinc/templates/header.php中加入文件products/index.php时,无法找到班级Cart.class.phpDatabase.class.php

要包含自动加载器,我使用:

    require_once('../inc/class/Database.class.php');
  1. products/index.phprequire_once('../class/Database.class.php');
  2. inc/templates/header.php

    请帮助我解决这个问题。

1 个答案:

答案 0 :(得分:2)

在autoload中使用此功能,也包括autoload.php所在位置的文件:

 require_once(dirname(__FILE__) . "/{$class}.class.php");

这只在index.php

中出现一次
require_once('../inc/class/autload.php');

每个PHP脚本都在当前位置运行,因此包含的所有文件具有相同的工作位置。因此,如果您致电/products/index.php,则工作文件夹为/products。使用dirname(__FILE__),您可以从调用脚本的文件中获取当前文件夹。这里../inc。有关更多信息查找:当前工作目录 - 如何更改文件夹PHP? PHP中的绝对和相对论。