Das Problem, das auftritt, bezieht sich nicht auf übergeordnete Verzeichnisse. In der Tat ist Ihre Composer.json-Autoload-Konfiguration für Ihre Verzeichnisstruktur korrekt.
Das Problem ist die Dateierweiterung .inc
, die mit der PSR-4-Spezifikation nicht kompatibel ist. Mehr Infos hier: How To Make Composer (PSR-4) To Work With ".class.php" Extension?
Wenn Sie nicht Ihren Quellcode aktualisieren können die PSR-4-Spezifikation entsprechen, können Sie Class Mapping:
Die classmap Referenzen alle kombiniert werden, während der Installation/Update, in einem einzigen key => value array, das sich in der generierten Datei vendor/composer/autoload_classmap.php
befindet. Diese Karte wird erstellt, indem nach Klassen in allen .php
und .inc
Dateien in den angegebenen Verzeichnissen/Dateien gesucht wird.
Sie können die Classmap-Generierung verwenden, um das automatische Laden für alle Bibliotheken zu definieren, die PSR-0/4 nicht folgen. Um dies zu konfigurieren, geben Sie alle Verzeichnisse oder Dateien an, nach denen nach Klassen gesucht werden soll.
So Ihre Konfiguration könnte wie folgt aussehen:
"autoload": {
"classmap": [
"../ModuleA/baseObjects",
"../ModuleB/baseObjects"
]
}
Denken Sie daran, wenn Sie Klassenzuordnung verwenden, müssen Sie composer dump-autoload
jederzeit Sie composer.json
ändern, fügen Sie eine Klasse, ändern, um eine Klasse Namen laufen/filename/path usw.
extra: wie @alepeino wies darauf hin, autoloader optimization verwendet, wird eine Klasse Karte von jedem PSR-0 und PSR-4 automatisch geladen Definitionen, unter Verwendung der gleichen zugrunde liegenden Code, dasserzeugenAutoload verwendet. Dadurch können Sie den Autoloader PSR-4 und die Erweiterung .inc
verwenden. Dies erfordert immer noch, dass Sie jedes Mal, wenn Sie eine Datei ändern, composer dump-autoload --optimize
ausführen, genau wie classmap.
Beste Empfehlung: Ändern Sie Ihren Quellcode, um den PSR-4-Spezifikationen zu folgen, und verwenden Sie die Erweiterung .php
.
Nächste beste, wenn Sie das nicht tun können: Verwenden Sie classmap
für Autoloading.
try "": "src (Hauptordner i seine erraten) /" keine Notwendigkeit, die Module zu initialisieren nur Ordner hinzufügen und/ – DaAmidza