2013-08-09 8 views
11

Ho creato un pacchetto di compositore personalizzato ma ho problemi a impostare le opzioni di autoload corrette per esso.compositore autoloader psr-0 namespace

Tutte le mie classi sono sotto lo spazio dei nomi MyNamespace/Common. Ad esempio, per includere la mia classe ArrayHelper, io uso Mynamespace/Common/Helper/ArrayHelper.

Questa è la parte rilevante della mia composer.json:

"autoload": { 
    "psr-0": { "MyNamespace\\": "" } 
} 

Ho letto questo: composer.json/autoload

Qualsiasi aiuto?

risposta

13

Devi navigare nel percorso del file del tuo spazio dei nomi.

"autoload": { 
    "psr-0": { "MyNameSpace": "./<path to your parent directory>" } 
} 

Ad esempio, questa è la mia struttura di directory:

composer.json 
source 
    \-Data 
    |-Controller 
    \-Repository 

Poi, nel file composer.json:

"autoload": { 
    "psr-0": { "MyNameSpace": "source/Data" } 
} 

Poi, posso chiamare lo spazio dei nomi da PHP

/* namespace for classes in controller directory */ 
namespace MyNameSpace\Controller 
/* namespace for classes in repository directory */ 
namespace MyNameSpace\Repository 
+0

La mia struttura del pacchetto era simile a symfony2 com poenents quindi ho dovuto configurare una directory di destinazione come questa: http://getcomposer.org/doc/04-schema.md#target-dir – brpaz

+1

definizioni dello spazio dei nomi delimiter dovrebbe usare "\" non "/" – thenetimp

+6

Non è questo PSR -4? –