그것은 자동 로딩을 사용하여 내 처음하지만 난 내 수업을 말하는 오류를 찾을 수 없습니다 점점 계속 :PHP의 자동 로딩 클래스
Fatal error: Class 'Classes\Sunrise\DB' not found in my\sample\path\.sunrise.app\init.php on line 52
편집 : 나는 DB에서 정적 방법을 사용하는 경우 라인 (52)은 수업. 어떤 이유로 PHP는 DB 클래스를 찾을 수 없다고 말합니다.
내 구조 :
이order (Folder)
+ index.php
.sunrise.app
+ init.php
+ ordersetup.php
+ Classes (Folder)
+ Sunrise (Folder)
+ DB.php
파일 init.php
내 오토로더를 포함하고 차례로 나는 DB 클래스를 사용할 필요가 있지만, 충족하고있는 파일 .sunrise.app/init.php
에서 include_once '../.sunrise.app/ordersetup.php';
에 order/index.php
에 포함되어있는 파일 ordersetup.php
에 포함되어 있습니다 위에 표시된 오류와 함께. 내가 도대체 뭘 잘못하고있는 겁니까?
.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 { ... }
편집 : seperators이 \
을하기 때문에 폴더 Sunrise
는 폴더 아래에 Classes
네임 스페이스에서는 클래스를 사용하지만 폴더 계층에서는 클래스를 사용합니다. 이것은 리눅스 시스템인가? 올바른 케이스에주의하십시오. 파일이 없으면 치명적인 오류를 발생시키기 위해 include 대신에 require를 사용하십시오. – apartridge
실수로'classes' 폴더는'Classes'입니다. 대문자입니다. – enchance
당신의'use PDO' 문은'Classes \ Sunrise' 네임 스페이스에서'PDO'라는 클래스의 오토로더를 호출 할 것입니다. 글로벌 네임 스페이스에서'PDO'를 원한다면,'use \ PDO'라고 써야합니다.'\'는 글로벌 네임 스페이스를 참조합니다. –