我今天正在学习如何使用命名空间和自动加载PHP
,我似乎遇到了障碍。当我不使用spl_autoload_register
但相反时,事情似乎起作用了require_once
。
我的文件夹结构很少:
- index.php
- class/
- Users.php
在我的index.php
文件中,我有:
<?php
require_once('class/Users.php');
echo User::get(1);
在我的class/Users.php
文件中,我有:
<?php
Class User {
function get($id) {
return $id;
}
}
这工作得很好,返回的ID1
理想情况下,我会想使用自动加载功能,我发现spl_autoload_*
这是我试图做的,但没有成功:
在我的class/Users.php
文件中,我有:
<?php
namespace Users; // Added a namespace
Class User {
function get($id) {
return $id;
}
}
在我的index.php
文件中,我有:
<?php
// Changed to using spl_autoload_register using an anonymous function to load the class
spl_autoload_register(function($class){
include('class/' . $class . '.php');
});
echo Users\User::get(1); // Added the Users namespace
但我收到一个错误:
`Class 'Users\User' not found in /Applications/MAMP/htdocs/index.php on line 7`
不太确定我做错了什么。