【发布时间】:2019-04-28 23:59:36
【问题描述】:
我使用 spl_autoload_register 来自动加载类
我的结构
index.php
Module\Autoloader.php
Module\MyClass.php
Test\test.php
在index.php 文件中
require_once ("Module\Autoloader.php");
use Module\MyClass;
include 'Test\test.php';
在Module\Autoloader.php 文件中
class Autoloader {
static public function loader($className) {
$filename = __DIR__."/" . str_replace("\\", '/', $className) . ".php";
echo $filename.'<br>';
if (file_exists($filename)) {
include($filename);
}
}
}
spl_autoload_register('Autoloader::loader');
在Module\MyClass.php 文件中
namespace Module;
class MyClass {
public static function run() {
echo 'run';
}
}
在Test\test.php 文件中
MyClass::run();
但是有错误
Fatal error: Uncaught Error: Class 'MyClass' not found in ..\Test\test.php
如何解决这个问题,谢谢
【问题讨论】:
-
输出
$filename,检查它是否正确并指向现有文件。 -
@NigelRen 是但同样的错误
-
试过
spl_autoload_register('loader');? -
@u_mulder 我只是使用要求自动加载编辑我的代码,输出是
Module/MyClass.php但同样的错误 -
在 test.php 中尝试
Module\MyClass::run()。
标签: php autoload spl-autoload-register