我一直在摆弄 PHP 中的命名空间,并试图让它工作,但它失败了
让我展示示例代码:
测试\视图\类\MainController.php
<?php
namespace test\views\classes;
class MainController
{
public function echoData()
{
echo 'ECHOD';
}
}
测试\视图\index.php
<?php
require_once '..\autoloader\autoloader.php';
use test\views\classes\MainController;
$cont = new MainController();
$cont->echoData();
测试\自动装载机\自动装载机.php
<?php
spl_autoload_register(null, FALSE);
spl_autoload_extensions('.php');
function classLoader($class)
{
$fileName = strtolower($class) . '.php';
$file = 'classes/' . $fileName;
if(!file_exists($file))
{
return FALSE;
}
include $file;
}
spl_autoload_register('classLoader');
引发错误:
Fatal error: Class 'test\views\classes\MainController' not found in ..\test\views\index.php on line 6
我错过了什么!
编辑:当 index.php 和 maincontroller.php 都在同一目录中而不使用自动加载器但使用 require_once('maincontroller.php'); 时,代码工作正常。如果它们位于不同的目录并具有自动加载功能,则不起作用。任何人都可以解决这个问题。
谢谢