我有一个看起来像这样的目录:
在文件inc/class/autoload.php
中,我编写了一个代码,可以自动包含所有类(Cart.class.php
和Database.class.php
)。
autoload.php
<?php
spl_autoload_register('autoload');
function autoload($class){
require_once($class.'.php');
}
问题在于,当我在inc/class/autoload.php
或inc/templates/header.php
中加入文件products/index.php
时,无法找到班级Cart.class.php
和Database.class.php
。
要包含自动加载器,我使用:
require_once('../inc/class/Database.class.php');
中products/index.php
在require_once('../class/Database.class.php');
inc/templates/header.php
醇>
请帮助我解决这个问题。
答案 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中的绝对和相对论。