OPUS4 / framework

OPUS 4 Database Implementation
Other
2 stars 7 forks source link

Namespaces für Framework definieren/aufräumen #133

Open j3nsch opened 2 years ago

j3nsch commented 2 years ago

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 Namespace Opus\Model existiert dadurch in beiden Paketen, Common und Framework. Das ist verwirrend, wenn im Framework z.B. die Klasse Opus\Model\Plugin\AbstractPlugin von der Klasse Opus\Model\Plugin\AbstractCollection erweitert wird, dort aber nicht mit einem use-Statement auftaucht. Beide Klasse befinden sich im selben Namespace, aber AbstractPlugin 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.

j3nsch commented 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.

j3nsch commented 2 years ago

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.

j3nsch commented 2 years ago

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.

j3nsch commented 2 years ago

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.