PHP 自动加载类

标签 php autoload

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

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

最佳答案

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

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

关于PHP 自动加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17514976/

相关文章:

php - 使用 CodeIgniter 从 2 个表中选择 SQL

php - 自动加载不适用于变量

php - 如何在 Laravel 5.1 中自动加载自定义类?

PHP fatal error :Uncaught Error: Failed opening required 'new-project/vendor/autoload.php' (include_path ='.;C:\php\pear' ) in E:\new-project\artisan:18

php - 如何管理依赖自动加载

php - Magento 在 sales./order 网格中显示错误的总记录

php - 为什么我不应该在 PHP 中使用 mysql_* 函数?

php - 对象构造函数的参数统计(外部方法)

php - 在 div 中加载 ajax 后运行 javascript 代码

php - 在 MySQL 查询中插入变量