3

这是我第一次使用自动加载,但我不断收到错误消息说找不到我的课程:

Fatal error: Class 'Classes\Sunrise\DB' not found in my\sample\path\.sunrise.app\init.php on line 52

编辑:第 52 行是我使用 DB 类中的静态方法的地方。出于某种原因,PHP 说它找不到 DB 类。

我的结构:

order (Folder)
    + index.php 
.sunrise.app
    + init.php
    + ordersetup.php
    + Classes (Folder)
        + Sunrise (Folder)
            + DB.php

该文件init.php包含我的自动加载器并包含在该文件ordersetup.php中,该文件又包含order/index.phpinclude_once '../.sunrise.app/ordersetup.php';该文件中.sunrise.app/init.php我需要使用 DB 类但遇到上面显示的错误。我究竟做错了什么?

我的自动加载器在.sunrise.app/init.php

function my_autoload($class_name) {
  include $class_name. '.php';
}
spl_autoload_register('my_autoload');

我的数据库类classes/Sunrise/DB.php

<?php namespace Classes\Sunrise;

use PDO;

class DB { ... }

编辑:文件夹Sunrise在文件夹下Classes

4

1 回答 1

1

因为分隔符是\您需要用操作系统的正确目录分隔符替换它们,如果这是一个 linux 操作系统,那么它们需要是/

function my_autoload($class_name) {
  $class_name = str_replace("\\","/",$class_name);
  require "../.sunrise.app/".$class_name. '.php'; //you have to use path relative to
                                                  // order or use a absolute path
                                                  // /var/www/.sunrise.app/
}

此外,如果 linux 系统确保类的大小写与文件夹的大小写匹配,因为 linux 区分大小写

于 2013-07-07T18:35:35.590 回答