これはすべて、実際にはクラスではなくパッケージについて話しているという前提に基づいています (例では言及されていますが、質問では求められていません)。
オブジェクトがある場合は、Composer
オブジェクトからベンダー ディレクトリのパスを取得できConfig
ます。
$vendorPath = $composer->getConfig()->get('vendor-dir');
$vendorPath
が含まれているはず/home/me/public_html/vendor/
です。
パッケージ名はすでにわかっているので、そこから残りのパスを作成するのはそれほど難しくありません。
これが不安定すぎると感じたり、ロジックを書きたくない場合は、別の解決策があります。すべてのパッケージを取得し、適切なパッケージが見つかるまで繰り返し、そこからパスを取得できます。
$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
含まれている必要があります/home/me/public_html/vendor/willdurand/geocoder