2012-07-21 47 views
6

我知道這個問題已經被問到,但似乎自動加載過程與作曲家有點改變。將庫添加到silex

我只想添加一個類庫到我的silex項目。

所以我做了這個文件: 供應商\ LIB \ picture.php

<?php 
namespace MyNamespace; 

class Picture 
{ 
    function testage() 
    { 
     echo 'hihaaa ça marche'; exit; 
    } 
} 

在供應商/作曲/ autoload_namespaces.php,我加入這行的大陣列:

'MyNamespace' => $vendorDir . '/lib/', 

我在主文件中加入了:

use MyNamespace\Picture as Picture; 

並稱之爲:

$app->register(new Picture()); 

這給了我這個錯誤:

Fatal error: Class 'MyNamespace\Picture' not found... 

我只是不知道如何添加類,我可以從任何控制器,方便的使用,不帶命令行(我不使用作曲家,我下載了預先配置好的silex),有什麼想法?

回答

12

如果您使用的是作曲家,則不應更改供應商目錄。您不應該向其添加文件,也不應該修改作曲者生成的文件。

我建議您將這些類放入src目錄。 @gunnx展示瞭如何在composer.json中配置自動加載,以便每次運行composer install時都會重新生成它。

該文件將在src/MyNamespace/Picture.php。在composer.json自動加載的配置是:

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

實際的解決方案是前兩個答案的組合。但我認爲弄清楚細節是很重要的;-)。

+1

在他的問題結尾,他明確表示他不使用作曲家。 – Maerlyn 2012-07-26 07:05:55

+0

Thx @igorw!把「src /」放在我身上! =)(雖然我想知道爲什麼) – 2013-01-24 08:46:30

2

你的圖片類應該在這個文件中:vendor/lib/MyNamespace/Picture.php。注意完整的命名空間和外殼。

+0

謝謝你,你的回答真的很有幫助。我還添加了實現ServiceProviderInterface並添加引導和註冊方法,現在我沒有錯誤。 – Vilrouge 2012-07-21 16:27:05

+0

如果我的答案解決了您的問題,請接受它。 – Maerlyn 2012-07-21 17:10:27

2

您可以將自己的代碼添加到自動裝入器,方法是將以下內容添加到composer.json (例如,

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