Prima di tutto, non penso che Composer stia tentando troppo di essere una versione PHP di NPM - potrebbero esserci delle somiglianze, ma ci si devono aspettare delle differenze. Potrebbe non essere il modo migliore per comprenderlo pensando allo strumento come NPM, Maven, Rake o altro, ma tradotto in PHP.
In secondo luogo, comprendi che Composer risolve il "problema" dell'autoloading in PHP. Avere due diverse versioni di una determinata libreria nella tua directory vendor/
non è uno stato di cose per cui Composer si sforza di ottenere qui, e forse questa è una buona cosa. Tutto nella tua directory vendor/
è accessibile dal codice di accesso dell'utente tramite lo stesso autoloader. Perché vorresti più di una classe con lo stesso nome di classe pienamente qualificato? Cosa dovrebbe succedere se si fa riferimento a quel nome di classe nel proprio codice - quale si desidera? Non sono sicuro che dovremmo anche volere che PHP sappia cosa fare quando si confrontano con due diversi pezzi di codice ciascuno cercando di interagire con versioni leggermente diverse della stessa dipendenza.
Il compositore sostituisce detto come Pear e Pecl in PHP, ed è stato parzialmente ispirato agli standard PSR-0/4 per il caricamento automatico di PHP. Ti dà tutte le tue dipendenze in un unico posto. Rende le dipendenze parte del tuo progetto, non parte della sua documentazione. Usa il versioning semantico che sta diventando standard nelle librerie PHP per trovare versioni delle tue dipendenze che giocano bene insieme, e se non ce ne sono, ti dice tanto.
Non abbiamo mai avuto uno strumento come questo in PHP, e il cambiamento che ha contribuito a far precipitare è una consapevolezza molto maggiore sulle parti della biblioteca e degli autori del framework su come i loro strumenti funzionano o non funzionano insieme. Molto è essere il duca nella comunità per affrontare queste sfide. Il compositore potrebbe non essere esattamente come NPM, ma la sua gestione della gestione dei pacchetti PHP è ideale per il linguaggio e colma una lacuna che ha reso la distribuzione di una grande applicazione PHP un dolore al collo.