Tipps und Tricks Filter

Angaben in der autoload.ini

Der autoload.ini Generator im Backend schreibt die meisten möglichen Dinge als Beispiel in die Datei. Es gibt aber auch noch eine mir bekannte Angabe die dort nicht erscheint. Hier mal eine erweiterte Version mit Hinweisen dazu.

;;
; List modules which are required to be loaded beforehand
;;
requires[] = "core"
requires[] = "*notification_center"
requires[] = "metamodels"

;;
; Configure what you want the autoload creator to register
;;
register_namespaces = true
register_classes = true
register_templates = true

;;
; Override the default configuration for certain sub directories
;;
[vendor/*]
register_namespaces = false
register_classes = false
register_templates = false

[runonce/*]
register_namespaces = false
register_classes = false
register_templates = false

Der "requires" Abschnitt hat 3 Angaben:

  • core : Der "Contao core" muss geladen sein, bevor die eigene Erweiterung geladen wird
  • metamodels : Die Erweiterung "metamodels" muss geladen sein, bevor die eigene Erweiterung geladen wird
  • *notification_center : Wenn die Erweiterung "notification_center" installiert ist, muss diese geladen sein. Ist diese Erweiterung nicht installiert, wird sie auch nicht verwendet. Es ist damit eine optionale Abhängigkeit / eine Empfehlung, markiert durch das Sternchen vor dem Namen.

Achtung: diese optionale Abhängigkeit ist erst ab Contao 3.3 möglich.
Der Vollständigkeit halber sei gesagt, dass solche Angaben für optionale Abhängigkeiten auch in der composer.json möglich sind. (suggest)

Der Abschnitt mit den drei "register..." Angaben steuern die Neugenerierung der autoload.php Datei, welche der drei Arten sollen neu gesucht und gegebenenfalls  in der autoload.php überschrieben werden. Diese Angaben gelten global (inkl. alle Unterverzeichnisse) für die ganze Erweiterung die damit definiert wird.

Der nächste Abschnitt mit den zwei Angaben definieren davon die Ausnahmen. Hier sollen also die Unterverzeichnisse "vendor" und "runonce" nicht durchsucht werden, alles was darin sich befindet an Klassen, Templates und Namespaces soll damit nicht in der autoload.php auftauchen.