Symfony ClassLoader 无法加载



我正在开发一个小型的php框架供个人使用。我试图自动加载类与通用classloader这是在Symfony中使用的,但当我试图使用一些这些类我得到错误

致命错误:在/opt/lampp/htdocs/web/globeapi/Start.php第14行没有找到Class 'Controller'

Start.php文件代码

    require('../libraries/loader/Loader.php');
use SymfonyComponentClassLoaderUniversalClassLoader;
$auto   = require('../config/Auto.php');

$Loader = new UniversalClassLoader();
$Loader->registerNamespaces($auto);
$Loader->register();

Controller::test();

下面是Controller类

的代码
    namespace LibrariesController;
class Controller
{
    function Controller()
    {
        
    }
    
    public static function test()
    {
        echo 1;
    }
}

这里是Auto.php文件的代码,它返回用于自动加载的类数组。

 return array(
        'LibrariesController'      => '../libraries/controller/Controller.php',
        'LibrariesModule'          => '../libraries/module/Module.php',
        'LibrariesView'            => '../libraries/view/View.php',
        'LibrariesSammy'           => '../libraries/sammy/Sammy.php',
        'LibrariesRoutes'          => '../config/Routes.php'
);

我的答案是使用当前版本的Symfony(2.2)和UniversalClassLoader。一般思路是遵循PSR-0标准,这样就不必为每个文件定义映射项。只要遵循简单的命名和位置约定,就可以找到您的类——很整洁,不是吗?:-)(注意目录和文件名都是区分大小写的)。

目录结构(供应商目录是由composer创建的)

app.php
composer.json
src
  App
    Libraries
      Controller
        Controller.php
vendor
  symfony
     class-loader
       Symfony
         Component
           ClassLoader

composer.json

{
  "require": {
      "symfony/class-loader": "2.2.*"
  }
}
app.php:
require_once 'vendor/symfony/class-loader/Symfony/Component/ClassLoader/UniversalClassLoader.php';
use SymfonyComponentClassLoaderUniversalClassLoader;
$loader = new UniversalClassLoader();
$loader->registerNamespace('App', 'src');
$loader->register();
AppLibrariesControllerController::test();
最后是控制器类:
//src/App/Libraries/Controller/Controller.php
namespace AppLibrariesController;
class Controller
{
    public static function test()
    {
        echo 1;
    }
}

相关内容

  • 没有找到相关文章

最新更新