All dies basiert auf der Annahme, dass Sie tatsächlich über Pakete und nicht über Klassen sprechen (die im Beispiel erwähnt, aber in der Frage nicht verlangt werden).
Wenn Sie das Objekt Composer
haben, können Sie den Pfad des Lieferantenverzeichnisses vom Objekt Config
abrufen:
$vendorPath
sollte jetzt /home/me/public_html/vendor/
enthalten.
Es sollte nicht zu schwer sein, den Rest des Pfades von dort zu erstellen, da Sie bereits den Paketnamen haben.
Wenn sich das zu platt anfühlt oder Sie die Logik nicht schreiben wollen, gibt es eine andere Lösung. Du könntest alle Pakete holen, iterieren, bis du das richtige Paket gefunden hast und den Pfad davon abrufst:
%Vor% $installPath
sollte nun /home/me/public_html/vendor/willdurand/geocoder
Try ReflectionClass :: getFileName - Ruft den Dateinamen der Datei ab, in der die Klasse definiert wurde. Ссылка
Beispiel:
%Vor%Oder Sie können dies verwenden:
%Vor%Die erste Methode versucht, die Klasse zu laden und den geladenen Klassenpfad zurückzugeben. Die zweite Methode gibt den Pfad von der Composer-Datenbank ohne automatische Klassenladefunktion zurück.
Hier ist meine Lösung, um den Herstellerpfad ohne das $ composer-Objekt zu erhalten:
%Vor%Ich bin mir nicht sicher, ob das Folgende der richtige Weg ist, denn der Komponist ändert sich so schnell.
Wenn Sie diesen Befehl ausführen:
%Vor%Es wird ein Klassenmatrix-Array in dieser Datei erstellt
%Vor%mit diesem Format "Klassenname" = & gt; Dateipfad.
So ist der Dateipfad einer gegebenen Klasse einfach zu finden. Wenn Sie das Skript im Stammordner Ihres Projekts erstellen, können Sie Folgendes tun:
%Vor%Tags und Links php composer-php