PHP自动加载类

时间:2013-07-07 18:26:32

标签: php autoload

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

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}}

文件夹下

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是区分大小写的