Tag 10 – Request Class

Gestern hatte ich sehr ausführlich über die „Application“-Klasse geschrieben. Heute möchte ich über den Inhalt der „Request“-Klassen meines REDcms schreiben.

Die wichtigste Verarbeitung findet innerhalb des Konstruktors statt. Dem Konstruktor werden 2 Arrays als Parameter mit übergeben, wobei z.Z. nur der Erste wichtig ist. Es handelt sich hierbei um die „GET“-Werte der URL. Da ja per „mod_rewrite“ und „.htaccess“ Anhänge an die „index.php“-Datei gemacht werden.

Als erstes wird der Modus gesetzt, dabei kommen die 4 Klassenkonstanten Request::MODE_PAGE, Request::MODE_BOX und Request::MODE_MENU zum Einsatz.

Als nächstes wird die ID ausgelesen. Falls sie nicht vorhanden ist wird ihr Wert auf 1 gesetzt.

Zum Schluss wird versucht die Aktion aus dem „GET“-Wert zu ermitteln. Falls keiner vorhanden ist, wird standardmäßig die Aktion „show“ benutzt. Auch hier kommen wieder Klassenkonstanten zu Einsatz. Diesmal sind es aber 5 Stück: Request::ACTION_ADD, Request::ACTION_EDIT, Request::ACTION_UPDATE, Request::ACTION_DELETE und Request::ACTION_SHOW.

  1. function __construct($get, $request)
  2. {
  3. $this->request = $request;
  4. if (!empty($get[‚mode‘])) {
  5. switch ($get[‚mode‘]) {
  6. case self::MODE_BOX:
  7. $this->mode = self::MODE_BOX;
  8. break;
  9. case self::MODE_MENU:
  10. $this->mode = self::MODE_MENU;
  11. break;
  12. default:
  13. $this->mode = self::MODE_PAGE;
  14. }
  15. } else {
  16. $this->mode = self::MODE_PAGE;
  17. }
  18. if (!empty($get[‚id‘]) && !is_nan($get[‚id‘])) {
  19. $this->id = $get[‚id‘];
  20. } else {
  21. $this->id = 1;
  22. }
  23. if(!empty($get[‚action‘])){
  24. switch ($get[‚action‘]) {
  25. case self::ACTION_ADD:
  26. $this->action = self::ACTION_ADD;
  27. break;
  28. case self::ACTION_EDIT:
  29. $this->action = self::ACTION_EDIT;
  30. break;
  31. case self::ACTION_UPDATE:
  32. $this->action = self::ACTION_UPDATE;
  33. break;
  34. case self::ACTION_DELETE:
  35. $this->action = self::ACTION_DELETE;
  36. break;
  37. case self::ACTION_SHOW:
  38. default:
  39. $this->action = self::ACTION_SHOW;
  40. }
  41. } else {
  42. $this->action = self::ACTION_SHOW;
  43. }
  44. }

Warum arbeite ich nicht mit Strings sondern mit Konstanten, die ja auch Strings beinhalten? Durch die Verwendung von Konstanten gewährleiste ich, dass die Werte unverändert eingesetzt werden können. Ohne Angst haben zu müssen, dass sie versehentlich überschrieben werden. Auch kann ich so später aus den String-Konstanten relativ schnell z.B. Integer-Konstanten machen und die Verwendung bleibt gleicht.

Die restlichen Methoden dieser Klasse sind ausschließlich die „Getter“- und „Setter“-Methoden von Mode, ID und Action.

Downloads

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.