Unterschied zwischen getInput() und getRequest()

Das Forum soll der Ablage von Lösungen für immer wieder auftauchende Problemstellungen dienen. // This forum contains solutions to problems that frequently occur.
Antworten
Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Unterschied zwischen getInput() und getRequest()

Beitrag von dave » 08.12.2016, 12:36:31

Hallo zusammen,
ich habe mal ein Frage, die mich schon seit Ewigkeiten beschäftigt.

Und zwar verarbeite ich viele Daten über Actions. Den Actions gebe ich dann ein oder mehrere Parameter mit, die dann diverse Aufgaben erfüllen.

Nun habe ich dabei zwei Möglichkeiten, die übergebene Daten in den Parametern auszulesen:

Code: Alles auswählen

$this->getInput()->getParameter('id');
 
und

Code: Alles auswählen

$this->getRequest()->getParameter('id');
 
Beide liefern gleiches Ergebnis: Die id hat den Wert "1".
Worin besteht nun aber genau der Unterschied, welches Vorgehensweise ist besonders im Hinblick auf Sicherheit und Filter zu bevorzugen?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: Unterschied zwischen getInput() und getRequest()

Beitrag von dr.e. » 08.12.2016, 13:28:27

Hallo dave,

Front-Controller-Actions bieten die Möglichkeit "eigene", an die Action gebundene Parameter mitzugeben. Diese können sowohl in der URL als auch (statisch) in einer Konfigurations-Datei hinterlegt werden. Die statische Konfiguration kann dazu eingesetzt werden, eine Action zur Anwendung in einer bestimmten Anwendung vorzubereiten. Diese können durch "dynamische" Parameter jederzeit überschrieben werden. Die "statischen" können z.B. auch als Standard-Werte genutzt werden. Hinweise dazu finden sich in der Doku hier.

Request-Parameter sind ganz normale URL-Parameter, die überall in der URL vorkommen können und natürlich auch in Actions genutzt werden können. Diese sind dann aber nicht konkret an die Action gebunden und können beispielsweise nicht per Action-Konfiguration vorbelegt werden.

Sowohl "normale" URL-Parameter als auch Action-Parameter werden durch Input-Filter behandelt - und Action-Anweisungen inkl. Parameter sind auch nur URL-Parameter. Insofern sehe ich aus Sicherheitsgesichtspunkten keine Unterschiede. Vom Handling her kannst du durch die direkte Bindung der Parameter an die Action jedoch dafür sorgen, dass die Parameter quasi automatisch eine Art Namespace haben und sich innerhalb der Applikation nicht überlagern können. In deinem Beispiel könnte bei mehreren APF-Modulen auf einer Seite der Parameter "id" mehrfach belegt sein und mehrere Module könnten dann auf die Eingabe reagieren.

Mein Tipp ist daher: sofern du mit normalen Request-Parametern zurecht kommst, kannst du diese auch ohne Probleme nutzen. Das fühlt sich von der Handhabung auch sicher einfacher und bekannter an. Sollte sich die Gefahr einer Überlagerung abzeichnen, empfehle ich die Nutzung der Action-Input-Parameter.

Hoffe das hilft dir! :)
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Unterschied zwischen getInput() und getRequest()

Beitrag von dave » 09.12.2016, 11:18:28

Hallo Christian,
Danke für die Ausführungen. In Verbindung mit der Doku ist sogar wieder ein wenig mehr Licht ins Dunkel gekommen.

Im Moment arbeite ich an folgendem: Eine Action sendet einen JSON-Response zurück. Für das Vorhaben gibt es ja auch das Interface Response. Wäre es vom programmiertechnischen Stil denn Ok, die Parameter über den Input anstatt dem Request zu holen und anschliessend den Response auszugeben?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4555
Registriert: 04.11.2007, 16:13:53

Re: Unterschied zwischen getInput() und getRequest()

Beitrag von dr.e. » 10.12.2016, 01:17:49

Absolut! Das ist aus meiner Sicht - und im Sinne der Action-Parameter - eine saubere Lösung.

Freue mich dir geholfen zu haben! :)
Viele Grüße,
Christian

Benutzeravatar
dave
Beiträge: 903
Registriert: 04.02.2011, 19:03:57
Wohnort: Berlin
Kontaktdaten:

Re: Unterschied zwischen getInput() und getRequest()

Beitrag von dave » 10.12.2016, 16:59:54

Prima! Nochmals herzlichen Dank.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast