All dies basiert auf der Annahme, dass Sie tatsächlich sprechen über Pakete und nicht Klassen (die in der genannten Beispiel, aber in der Frage nicht gefragt).
Wenn Sie das Composer
Objekt haben, können Sie den Pfad des Lieferanten-Verzeichnis aus dem Config
Objekt erhalten:
$vendorPath = $composer->getConfig()->get('vendor-dir');
$vendorPath
jetzt /home/me/public_html/vendor/
enthalten sollte.
Es sollte nicht zu schwer sein, den Rest des Pfades von dort zu konstruieren, da Sie bereits den Paketnamen haben.
Wenn sich das zu flockig anfühlt oder Sie die Logik nicht schreiben möchten, gibt es eine andere Lösung. Sie könnten alle Pakete holen, durchlaufen, bis Sie das richtige Paket finden und den Weg von der es packen:
$repositoryManager = $composer->getRepositoryManager();
$installationManager = $composer->getInstallationManager();
$localRepository = $repositoryManager->getLocalRepository();
$packages = $localRepository->getPackages();
foreach ($packages as $package) {
if ($package->getName() === 'willdurand/geocoder') {
$installPath = $installationManager->getInstallPath($package);
break;
}
}
$installPath
jetzt /home/me/public_html/vendor/willdurand/geocoder
nicht sicher, warum Sie den Dateipfad wissen müssen. Wenn Sie nur Klassen autoloadieren möchten, stören Sie nicht. Der Befehl 'php /path/to/composer.phar dump-autoload -o' macht das Autoload mit dem Autoloader des Composers sehr schnell. –