2013-03-02 115 views
1

我有一個項目結構,看起來像:無法自動加載類使用作曲家

app/ 
app/models/ 
app/controllers/ 
app/views/ 
public/ 
vendor/ 
composer.json 

內部應用程序/控制器/ IndexController.php,我有:

require '../vendor/autoload.php'; 

use MyApp\Models\Test; 

class IndexController { 

    public function __construct() { 
     $t = new Test(); // can't be found 
    } 
} 

這裏是我的composer.json :

{ 
    "require": { 
    "aws/aws-sdk-php": "*", 
    }, 
    "autoload": { 
    "psr-0": { 
     "MyApp": "app/" 
    } 
    } 
} 

更新composer.json後,我運行composer.phar update更新生成的自動加載文件。

僅供參考 - 我沒有使用任何類型的MVC框架。這只是我喜歡用於小型項目的自定義輕量級結構。

如何解決我的項目,以便我可以從我的模型文件夾自動加載類並在控制器中正確使用它們?

回答

2

如果您使用psr-0自動加載,那麼您需要遵循psr-0規範。這意味着,如果您指定"MyApp": "app/",則類MyApp \ Models \ Test必須位於app/MyApp/Models/Test.php中。

+0

說我想離開psr-0,只是修改我的composer.json以使其與我現有的文件夾結構一起工作。我會怎麼做? – doremi 2013-03-04 00:18:29

+0

然後使用'classmap'自動加載,支持任何東西。 ''autoload「:{」classmap「:[」app /「]}將掃描整個app目錄中的.php/.inc文件並查找任何定義的所有類。開發包本身不太方便,因爲當你添加一個新類時,你應該再次運行'composer dump-autoload',以使其發現它。 – Seldaek 2013-03-04 11:51:22

相關問題