Fallstricke mit der Typsicherheit: neues globales Attribut typeto

In diesem Forum können Wünsche für die Weiterentwicklung von webEdition diskutiert werden.
Gerade bei umfangreichen Änderungen ist es sinnvoll, diese vor einem Eintrag in die Bugbase zu diskutieren. Das Ergebnis kann dann mit Verweis auf den Forumseintrag in die Bugbase eingetragen werden.
Forumsregeln
Bitte achtet hier besonders darauf, nicht abzuschweifen.
Wir werden hier verstärkt moderieren und ggf. Dinge in andere Foren (Smalltalk etc.) auslagern.
ArminSchulz
Senior Member
Beiträge: 250
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Berlin
Kontaktdaten:

Fallstricke mit der Typsicherheit: neues globales Attribut typeto

Beitragvon ArminSchulz » So 13. Nov 2022, 19:00

Wie in meinem Vortrag auf der Konferenz dargelegt, liefert ein
<we:field type="text" name="we_id" to="global" nameto="dieID"/>
immer einen String
gleiches gilt in PHP: $GLOBALS[‘dieID‘] = $dieID = we_tag(‘field‘,[‘type‘=>‘text‘, ‘name‘=>‘we_id‘]);
wenn ich dann folgendes mache zur initialisierung
$myDoc->initByID($GLOBALS[‘dieID‘])-> Error, erwartet einen Integer
man muss immer intval() nutzen oder nach int casten damit es funktioniert.
Es gibt ja mittlerweile auch <we:field type="int" name="we_id" to="global" nameto="dieID"/>
Aber auch das liefert eine Globals vom Typ "string"

Es wäre besser, man könnte den Ausgabe-Typ direkt beinflussen
Ich würde daher ein generelles (analog zu to und nameto) neues Attribut vorschlagen "typeto" mit string, array, bool, int,....

Analog bei we:setvar:
hier gibt es das Attribut varType, aber das beeinflusst nur die Filterung (aus REQUST,POST,GET) nicht den Ausgabe-Typ.
Das wird ja auch zum füllen / modifizieren von Properties von Dokumenten (usw.) vorgeschlagen.
Da es dort das Attribut "typefrom" schon gibt (mit anderem Zweck), wäre hier ein Attribut "fromtype" hilfreich
Hier wäre der default-Wert "string" da man in WE-Tags (ohne PHP) nichts anderes als Strings übergeben kann,
Aber in PHP kann man dann auch gleich z.B. ein Array übergeben, oder einen bool, oder (später mal ein DatetTime-Object)

Ich stelle das mal hier zur Diskussion und hoffe auf positives Feedback oder Vorschläge
wie man das eleganter lösen kann.
Dr. Armin Schulz

Astendo GmbH
www.astendo.de

ThomasGoebe

Re: Fallstricke mit der Typsicherheit: neues globales Attribut typeto

Beitragvon ThomasGoebe » So 13. Nov 2022, 21:09

Kann we nicht selbst dafür sorgen, dass die richtigen Typen bei setvar etc. rauskommen? Die Typen sind doch in der Regel bekannt.
Und bei dem Beispiel mit der we_id sollte es eher einen neuen Typ geben: we:field type="id" und nicht type="text" btw. könnte das type="" im Grunde komplett dort entfallen, da die Typen sich aus der jeweiligen Felddefinition ergeben.

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: Fallstricke mit der Typsicherheit: neues globales Attribut typeto

Beitragvon blickfang » Mo 14. Nov 2022, 09:06

ideal wäre natürlich, wenn setVar die Typen gleich "richtig" setzt, sofern bekannt. Um den Tyo nach Wunsch beeinflussen zu können wäre evtl. auch ein Attribut toType="bool" usw. denkbar?
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

lukasimhof
Member
Beiträge: 44
Registriert: Do 30. Aug 2012, 16:09
Wohnort: Berlin

Re: Fallstricke mit der Typsicherheit: neues globales Attribut typeto

Beitragvon lukasimhof » Mo 21. Nov 2022, 18:39

Ich würde auch meinen: WE soll wo immer möglich selbst die passenden Typen setzen (auf jeden Fall bei typbekannten Feldern und Properties), und zusätzlich macht auch ein "typeto" Sinn...
... letzteres zum einen, um ohne PHP Werte in einen anderen Typ zu casten, zum anderen aber auch weil z.B. bei from="request" ja per se alles als String kommt (hier würde mit dem typeto dann auch die freie Wahl des Requestfilters gesteuert).
Core-Entwickler webEdition e.V.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Fallstricke mit der Typsicherheit: neues globales Attribut typeto

Beitragvon mokraemer » Do 24. Nov 2022, 01:34

Der Rückgabewert von allen Tags ist per se erst mal String - weil sie für die Ausgabe auf einer Webseite konzipiert sind.
Erst PHP 8.2 erlaubt dann zusammengesetzte Typen als Rückgabe - was deren Einsatz für Warnung bringen würde, müßte man abwarten - ansonsten könnten wir nur die Rückgabe des Tags zum Typ (mittels Attribut) casten.
webEdition-Kern-Entwickler

Benutzeravatar
haydi
Senior Member
Beiträge: 645
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Hirschberg
Kontaktdaten:

Re: Fallstricke mit der Typsicherheit: neues globales Attribut typeto

Beitragvon haydi » Mo 9. Jan 2023, 10:00

Ich finde den Vorschlag von Armin sehr gut! Hatte ich nie dran gedacht, weil ich stets automatisch ein intval() mache auch Sicherheitsgründen.

Die Attribute "typeto" und "fromtype" sind auch vom Namen her so gewählt, dass sie bie Bedarf universeller eingesetzt werden können.

Zudem würde ich auch erwarten, dass wenn ich ein <we:field type="int" name="we_id" to="global" nameto="dieID"/>hätte, dass dann auch ein int zurückkommt.
Neue Typen wie Thomas vorschlägt fände ich nicht gut... macht die Sache zu kompliziert, finde ich.
Heidi Wetzel
Internet-Applikationen & Webseiten-Erstellung
https://www.heidi-wetzel.de


Zurück zu „webEdition Feature Requests“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste