Open j3nsch opened 2 years ago
Ich denke die Model-Klassen, wie Document
, Person
, Title
und mehr sollten später unter Opus\Model
zu finden sein und nicht mehr direkt unter Opus
. Dafür müssten dann nur die use
-Statements in der Application angepasst werden.
Gibt es dazu anderen Meinungen? Es so zu lassen wie es ist, hat auch Vorteile.
Bei Laminas scheint alles auf 2nd-Level Namespaces verteilt zu sein, also z.B. Laminas\Config
und Laminas\StdLib
. OPUS 4 hat aber Core-Klassen.
Vielleicht sollte man die Model-Klassen auf mehrere Namespaces verteilen, einmal für die Verwaltungsobjekte, die Dokumentmetadaten und die Referenzdaten.
Das Unterscheidungskriterium ist vermutlich ganz einfach. Alles was von Doctrine abhängig ist, sollte unter Opus\Db
liegen. Die Klassen unter Opus\Model
sollten unabhängig sein von der konkreten Datenbankanbindung. Die Annotationen, die von Doctrine für Modellklassen verwendet werden, sind ein Sonderfall. Für den Anfang würde ich sagen das ist in Ordnung, aber man sollte da noch einmal genau drüber nachdenken.
Das Framework soll den Namespace Opus\Db
haben und als Package später auch opus4-db heißen. Alle anderen Packages haben auch unterschiedliche Namespaces, opus4-common hat Opus\Common
.
Das Framework war ursprünglich das vollständige Backend für OPUS 4, das z.B. auch den Code für die Suche enthielt. Es soll in Zukunft nur noch die Datenbankanbindung implementieren und vermutlich auch einen neuen Namen bekommen.
Die Suche wurde bereits vollständig ausgelagert. Ein weiterer Teil des Codes ist bereits in das
opus4-common
Paket verschoben worden. Der NamespaceOpus\Model
existiert dadurch in beiden Paketen, Common und Framework. Das ist verwirrend, wenn im Framework z.B. die KlasseOpus\Model\Plugin\AbstractPlugin
von der KlasseOpus\Model\Plugin\AbstractCollection
erweitert wird, dort aber nicht mit einemuse
-Statement auftaucht. Beide Klasse befinden sich im selben Namespace, aberAbstractPlugin
befindet sich in Common.Der Namespace
Opus\Model
gehört nach kommen und soll letztendlich die gesamte Definition des OPUS 4 Datenmodells enthalten, den Teil der unabhängig sein sollte von der eigentlichen Datenbankanbindung. Die Auslagerung würde aber bewirken, dass wir momentan ständig an zwei Git-Repositorien gleichzeitig arbeiten müssen. Daher denke ich, es wäre einfacher die Umstrukturierung, den Umbau im Framework zu vollziehen und dann später den Model-Code nach Common zu verschieben. Wir müssen dieses Ziel aber während der Arbeiten ständig im Auge behalten.