我写了一个小的php mvc框架,我想自动加载我的Clases,如Controller,Model等。为此目的,我尝试使用Symfony的UniversalClassLoader,他只是不会加载类,当我尝试使用它们时,我得到这个错误
Fatal error: Class 'APP\Libraries\Controller\Controller' not found in /opt/lampp/htdocs/web/globeapi/Bootstrap.php on line 24
这是Bootstrap.php
require('../libraries/loader/UniversalClassLoader.php');
use Symfony\Component\ClassLoader\UniversalClassLoader;
class Bootstrap
{
function Bootstrap()
{
}
public static function run()
{
$auto = require('../config/Auto.php');
$SPL = new UniversalClassLoader();
$SPL->registerNamespace('APP\Libraries\Controller', '../libraries/controller/Controller.php');
$SPL->register();
APP\Libraries\Controller\Controller::test();
}
}
这里是Controller.php
namespace APP\Libraries\Controller;
class Controller
{
function __construct()
{
echo 1;
}
public static function test()
{
echo 1;
}
}
我也尝试过MapClassLoader但结果是一样的。
答案 0 :(得分:1)
我认为你只需要注册主命名空间。第二个参数需要是路径而不是文件。也尝试绝对不相对路径。下一个问题是您的目录是小写的。因此,自动加载器期望命名空间LIB_FOLDER/APP/Libraries/Controller
的路径APP\Libraries\Controller
。我不知道你是否可以设置别名来将小写转换为大写。但它似乎并非如此。
尝试类似的东西:
$SPL->registerNamespace('APP', __DIR__.'/../LIB_FOLDER');