Wszystko to opiera się na założeniu, że w rzeczywistości mówimy o pakiety a nie klas (które są wymienione w przykład, ale nie pytano o to w pytaniu).
Jeśli masz obiekt Composer
można uzyskać ścieżkę katalogu dostawców z obiektu Config
:
$vendorPath = $composer->getConfig()->get('vendor-dir');
$vendorPath
powinien zawierać /home/me/public_html/vendor/
.
Nie powinno być zbyt trudno zbudować resztę ścieżki, ponieważ już masz nazwę pakietu.
Jeśli to wydaje się zbyt kruche lub nie chcesz pisać logiki, istnieje inne rozwiązanie. Można pobrać wszystkie pakiety, iteracji, aż znajdziesz odpowiedni pakiet i chwycić ścieżkę od niego:
$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
powinien zawierać /home/me/public_html/vendor/willdurand/geocoder
Nie wiem, dlaczego trzeba znać filepath. Jeśli chcesz po prostu autoloadować, nie przejmuj się. Polecenie 'php /path/to/composer.phar dump-autoload -o' spowoduje automatyczne ładowanie automatyczne za pomocą autoloadera kompozytora. –