2012-11-20 53 views
0

我正在構建一個使用Silex(微框架)的應用程序。Silex自定義類結構和加載

正如我的應用程序在規模和使用幾條路線相同的代碼的需求正在成長上升,我想組織一切多一點..

我的想法是創建一些自定義的類,然後共享他們與我的應用程序:

$app['test'] = $app->share(function() { 
    require_once('../vendor/acme/src/test.php'); 
    $testClass = new Test(); 
    return new $testClass; 
}); 

這實際工作,但我需要用以下幫助:

  1. 自動加載與作曲類(順便它應該在的Silex完成)。
  2. 能夠使用我的班級內現有的Doctrine DBAL連接和方法。

我希望有人能給我一些提示如何繼續,因爲我沒有發現Silex文檔非常有用,並且我是Silex和Composer的初學者。

回答

2

檢查composer docs about autoloading,當你添加你的配置時,你應該運行composer dump-autoload重新生成composer自動加載器。那麼你的require_once就不再需要了。

這很可能將工作(假設類測試在src/test.php的):

{ 
    "autoload": { 
     "psr-0": { 
      "": "src/" 
     } 
    } 
} 

這將使SRC/autoloadable內部的任何PSR-0標準的類。

關於第二點(在您的班級中使用DBAL),您應該將您的班級配置爲訪問db服務的一個思傑服務。在http://silex.sensiolabs.org/doc/services.html

+0

閱讀服務,這固定了一半我的問題。 – charliexx

+0

在關於原則的末尾添加了一個註釋。 – Seldaek