Domanda

Ho un progetto compositore, chiamalo MyVendor\Database.Quel progetto utilizza compositore e autoloading.Ci sono diversi file in quel progetto che hanno:

require_once __DIR__."/../vendor/autoload.php";
.

per utilizzare il ritmo automatico.

Tutto funziona alla grande, finché non includo MyVendor\Database in un altro progetto.

Ho un altro progetto, chiamalo MyVendor\CoolPackage che richiede MyVendor\Database.

Esegui il compositore Installa su CoolPackage e scarica MyVendor\Database nella cartella del fornitore.

Il problema da qui però, i miei file sono i miei file all'interno vendor\MyVendor\Database fallire perché chiamano require_once __DIR__."/../vendor/autoload.php", ma non c'è una cartella fornitore all'interno di \vendor\MyVendor\Database.

È stato utile?

Soluzione

Nel tuo composer.json definisci lo schema di autooading. Per motivi per cui sei stato scoperto ora, non è una buona idea chiamare l'autoloading del compositore all'interno di uno qualsiasi dei file che dovrebbero essere automaticamente automaticamente non solo all'interno di questa applicazione o modulo, ma anche in qualsiasi altra applicazione.

Fondamentalmente, i file in qualsiasi progetto composito devono essere suddivisi in base alla definizione di PSR-0 o 4 Autoloading: Dichiarano solo le classi o le funzioni senza effetti collaterali (come il codice di esecuzione) o eseguono il codice senza il codice senza Definizione di classi o funzioni. Solo gli ex file possono essere automaticamente effettuati (ad eccezione delle funzioni, che sarebbero in grado di dichiarare sempre il caricamento del file contenente con una sezione Autoload files), quest'ultima non deve essere automaticamente effettuata.

E poi dovrebbe diventare relativamente facile: tutte le classi che possono essere automaticamente scariche possono essere utilizzate anche quando questo componente è incluso in un'altra applicazione. Qualcos'altro che non è una classe non può essere usata direttamente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top