OPUS4 / framework

OPUS 4 Database Implementation
Other
2 stars 7 forks source link

XML Erzeugung unabhängig von konkreten Model-Klassen machen #280

Open j3nsch opened 2 years ago

j3nsch commented 2 years ago

Der Code unter Opus\Xml hängt von konkreten Klassen wie Opus\Model\AbstractModel und Opus\Model\Dependent\Link\AbstractLinkModel ab. Diese Abhängigkeiten müssen durch Interfaces aufgelöst werden. Damit erhalten wir mehr Flexibilität bei der Implementation der Modellklassen und können den XML Code in ein separates Paket auslagern (OPUS4/opus4-xml#2).

j3nsch commented 2 years ago

Abhängigkeiten von AbstractModel werden durch ModelInterface aus Common ersetzt. Für Field wird FieldInterface verwendet.

Die neue Date-Klasse erzeugt neue Field-Objekte "on-demand", damit die neue Klasse immer noch genauso verwendet werden kann wie die alten Modellklassen im Framework.

j3nsch commented 2 years ago

Die Prüfung auf AbstractDb, also Modelle mit ID, wird durch eine Prüfung auf PersistableInterface ersetzt.

Anstelle von AbstractLinkModel wird LinkModelInterface verwendet.

Für AbstractDependentModel wird DependentModelInterface eingeführt.

Es muss sich noch zeigen, ob diese Interface für die neue Implementation der Datenbankanbindung noch weiter angepasst werden müssen. Ziel ist es eine Abstraktionsschicht zu schaffen, mit der das alte Framework und auch die neue Doctrine-Implementation mit der OPUS 4 Application genutzt werden kann. Das sollte den Umstieg und die weitere Entwicklung vereinfachen.

j3nsch commented 1 year ago

Im Zusammenhang mit dem Wechsel zu PHP 8 sind Probleme mit den XML-Versionsnummern aufgetreten. Vorher erschien im XML "2.0", mit PHP 8, nur noch "2". Die Funktion getVersion verwendet floor und liefert ein Float-Wert zurück. Es ist unklar warum das gemacht wird. Die Versionsnummer wird im Cache verwendet, um das XML zu identifizieren.