用户自动加载器包括 类

User autoloader to include classes

我有一个如下所示的目录:

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

autoload.php

<?php

spl_autoload_register('autoload');

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

问题是,当我在 inc/templates/header.phpproducts/index.php 中包含文件 inc/class/autoload.php 时,class Cart.class.phpDatabase.class.php 不能被发现。

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

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

请帮我解决这个问题。

在自动加载中使用它也包括来自您的 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.

中的绝对路径和相对路径