【问题标题】:User autoloader to include classes用户自动加载器以包含类
【发布时间】:2016-07-13 20:10:13
【问题描述】:

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

在文件inc/class/autoload.php 中,我编写了一个代码来自动包含所有类(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 时,找不到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

请帮我解决这个问题。

【问题讨论】:

  • 您的自动加载功能似乎与 .class 后缀或保存文件的具体子目录无关(不,您没有提到正在准备的 include_path)。

标签: php class autoload


【解决方案1】:

在自动加载中使用它也包括来自您的 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 中的绝对路径和相对路径。

【讨论】:

  • 谢谢,它正在工作。你能更好地给我解释一下吗?通常文件在同一个文件夹中,所以我只需要指定文件的名称。但是我为什么要提到自动加载所在的文件夹的名称?
猜你喜欢
  • 2011-12-04
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 2012-10-01
  • 2017-10-08
  • 1970-01-01
相关资源
最近更新 更多