Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Änderung der Signatur durch final keyword in der Dataset Klasse rückgängig machen #1498

Closed
dgrothaus-mc opened this issue Apr 2, 2024 · 0 comments · Fixed by #1499
Closed

Comments

@dgrothaus-mc
Copy link
Contributor

Wir nutzen in einigen etwas komplexeren Projekten von yForm hauptsächlich yORM für den Zugriff auf Daten. Im Rahmen der Entwicklung sind einige Klassen entstanden, welche yForm so erweitern, dass auch Tabellen mit zusammengesetzten Primärschlüsseln oder VARCHAR Primärschlüsseln unterstützt werden.

Um alle Komponenten von yForm kompatibel miteinander zu halten, wird die Funktion private static function modelToTable(): string; überschrieben, um Zugriff auf die private Variable private static array $modelToTable = []; zu erhalten.
Durch die Deklaration der Methode modelToTable() als final gibt es keine Möglichkeit mehr, die Variable $modelToTable zu beeinflussen.

In einer gewöhnlichen OOP Umgebung wäre das nicht weiter schlimm, da man die verwendete Klasse mit dem final Keyword einfach durch eine eigene Klasse ersetzen würde. Leider bietet yForm nicht, anders also zum Beispiel die PDO mit PDO::ATTR_STATEMENT_CLASS für Statements, die Möglichkeit eine alternative Klasse anzugeben, welche zum Erzeugen von Datasets genutzt werden soll.

Ein Update auf Version 4.2.0 versetzt ein betroffene Projekte daher in einen Fehlerzustand, der sich nur durch ein Downgrade beheben lässt. Eine Änderung der Signatur einer protected Method auf final würde ich in einer einer Minor-Version auch nicht erwarten.

Den Wunsch, die Programmierung von yForm weiter zu sichern und zu festigen, verstehe ich. Allerdings ist auch eine der Stärken von Redaxo, dass erfahrene Entwickler das System sehr flexibel anpassen können, was durch diese Änderung stark eingeschränkt wird.

Eine Öffnung der API, um einfacher die Funktionalität den eigenen Bedürfnissen anzupassen, würde ich begrüßen. Eventuell ist auch eine Diskussion nötig, um unterschiedliche Meinungen einzuholen.
Wie vielleicht aus #1438 und #1437 ersichtlich, wird recht ausgiebig Gebrauch von yORM gemacht und auch angepasst, wenn Funktionalität vorhanden ist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant