Это мой первый раз, используя автозагрузку, но я получаю ошибку говоря мой класс не может быть найдено:PHP самозарядные классы
Fatal error: Class 'Classes\Sunrise\DB' not found in my\sample\path\.sunrise.app\init.php on line 52
Edit: Line 52, где я использую статический метод из БД класс. По какой-то причине PHP говорит, что не может найти класс DB.
Моя структура:
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
мне нужно использовать класс DB, но я встретил с ошибкой, показанной выше. Что я делаю не так?
Мой автозагрузчик в .sunrise.app/init.php
:
function my_autoload($class_name) {
include $class_name. '.php';
}
spl_autoload_register('my_autoload');
Мой DB класс в classes/Sunrise/DB.php
:
<?php namespace Classes\Sunrise;
use PDO;
class DB { ... }
Edit: Папка Sunrise
находится в папке Classes
Вы используете Классы в пространстве имен, но классы в иерархии папок. Является ли это системой Linux? Остерегайтесь правильного корпуса. Используйте require вместо include для запуска фатальной ошибки, если файл не существует. – apartridge
Моя ошибка: папка 'classes' на самом деле' Classes'. Он капитализирован. – enchance
Оператор 'use PDO' вызовет автозагрузчик для класса с именем' PDO' в пространстве имен 'Classes \ Sunrise'. Если вы хотите «PDO» из глобального пространства имен, вам придется писать 'use \ PDO', где ведущее' '' ссылается на глобальное пространство имен –