这是我第一次使用自动加载,但我一直收到错误消息,说我的课程无法找到:
Fatal error: Class 'Classes\Sunrise\DB' not found in my\sample\path\.sunrise.app\init.php on line 52
编辑:第52行是我使用DB类中的静态方法的地方。出于某种原因,PHP说它无法找到数据库类。
我的结构:
order (Folder)
+ index.php
.sunrise.app
+ init.php
+ ordersetup.php
+ Classes (Folder)
+ Sunrise (Folder)
+ DB.php
文件init.php
包含我的自动加载器,并包含在文件ordersetup.php
中,而文件order/index.php
中包含include_once '../.sunrise.app/ordersetup.php';
.sunrise.app/init.php
文件.sunrise.app/init.php
我需要使用DB类但遇到上面显示的错误。我做错了什么?
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
文件夹位于{{1}}
答案 0 :(得分: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是区分大小写的