2013-05-12 168 views
0

IAM制定個人use.Iam小PHP框架嘗試自動裝載類與UniversalClassLoaderwich在Symfony.But用來當我嘗試使用一些clases我得到錯誤Symfony的類加載器不會加載

Fatal error: Class 'Controller' not found in /opt/lampp/htdocs/web/globeapi/Start.php on line 14

這裏是Start.php的文件代碼。

require('../libraries/loader/Loader.php'); 

use Symfony\Component\ClassLoader\UniversalClassLoader; 

$auto = require('../config/Auto.php'); 


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


Controller::test(); 

這裏是控制器類的代碼

namespace Libraries\Controller; 

class Controller 
{ 
    function Controller() 
    { 

    } 

    public static function test() 
    { 
     echo 1; 
    } 
} 

這裏是Auto.php文件至極返回的類自動加載陣列的代碼。

return array(
     'Libraries\Controller'  => '../libraries/controller/Controller.php', 
     'Libraries\Module'   => '../libraries/module/Module.php', 
     'Libraries\View'   => '../libraries/view/View.php', 
     'Libraries\Sammy'   => '../libraries/sammy/Sammy.php', 
     'Libraries\Routes'   => '../config/Routes.php' 
); 
+0

確實\庫\控制器::測試();工作? – herrjeh42 2013-05-12 08:36:18

+0

提示:使用通用類加載器不需要包含包含所有類和文件的數組。看看http://symfony.com/doc/current/components/class_loader.html – herrjeh42 2013-05-12 08:37:53

+0

以及\ Libraries \ Controller :: test();不工作 – 2013-05-12 08:42:33

回答

3

我的答案是使用當前版本的Symfony(2.2)和UniversalClassLoader。總體思路是遵循PSR-0標準,以便不必爲每個文件定義映射條目。只需遵循簡單的命名和位置約定,就可以找到你的課程 - 整潔,不是嗎? :-)(注意目錄和文件名都區分大小寫)。

目錄結構(供應商目錄由作曲家創建)

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 Symfony\Component\ClassLoader\UniversalClassLoader; 

$loader = new UniversalClassLoader(); 
$loader->registerNamespace('App', 'src'); 
$loader->register(); 

\App\Libraries\Controller\Controller::test(); 

最後的控制器類

//src/App/Libraries/Controller/Controller.php 
namespace App\Libraries\Controller; 

class Controller 
{ 

    public static function test() 
    { 
     echo 1; 
    } 
}