Frage

Ich habe in letzter Zeit PHP -Frameworks nach einigen persönlichen Projekten untersucht, und es sieht so aus, als ob die meisten von ihnen einen Frontcontroller verwenden, um eine Antwort nachzuahmen. Der Controller erhält die Params aus der Anforderung und leitet ab, indem sie je nach Logik die entsprechenden Headers senden. Dies ist die "Antwort". Ist dies der beste Weg, dies in PHP zu tun, oder gibt es andere Theorien darüber, wie man um Umlösungen und Antworten umgeht?

War es hilfreich?

Lösung

Ein Front -Controller bietet sich recht gut für eine Webumgebung, sodass Sie alle Anfragen an Ihre Bewerbung übertragen können. Da HTTP staatenlos ist und ein Benutzer in gewissem Sinne versehentlich auf Teile Ihrer App stolpern kann (dh auf zufällige URLs), können Sie mit einem Frontcontroller den Einstiegspunkt Ihrer Anwendung ermitteln und angemessen reagieren.

bearbeiten: Als Reaktion auf die Kommentare denke ich, dass die Verwirrung möglicherweise sein kann, dass Java viel mehr Struktur hat als PHP, was das Ganze überkompliziert? Letztendlich kann PHP die sehr grundlegende Interaktion von der Anfrage zur Antwort bereitstellen:

switch($_GET['page']) {
  case "one";
      print "page one!";
      break;
  default:
      print "default page";
      break;
}

Und von dort aus können Sie alle möglichen Dinge an Frontcontroller übertragen, die Anforderungsobjekte über eine Filterkette übertragen werden, an einen Seitencontroller, der an das entsprechende Modell leitet Auf die Ansicht, die die entsprechende Antwort erstellt, während zufällige Ereignishaken abgefeuert. Letztendlich liegt es an Ihnen (als Entwickler), zu wählen, welche Komplexität/Trennung Sie suchen. Dies ist sowohl die Schönheit als auch die Böse von PHP :)

Andere Tipps

Ich denke, Sie verwechseln eine HTTP -Antwort mit einem Antwortobjekt in den von Ihnen angesehenen Frameworks. Ein Frontcontroller ist das Gateway für Ihre Anwendung - alle (HTTP) -Anfragen gehen ihn durch und leiten zu dem entsprechenden Controller/der entsprechenden Aktion. Die Bearbeitung einer Anfrage führt nicht zu einer zurückgegebenen Antwort (häufig sind Anfragen nur zum Senden von Informationen an den Server). Alle Anfragen hätten jedoch den Frontcontroller weitergegeben.

Ein Anforderungsobjekt wird häufig verwendet, um die Umgebung und die HTTP -Anforderungsparameter zu verkapulieren und eine API zur Abzweigung bereitzustellen. Sein Komplement, das Antwortobjekt, wird häufig verwendet, um den Prozess der Erzeugung einer HTTP -Antwort einschließlich der Generationsheader zu verkörpern.

Es gibt andere Ansätze zum Umgang mit Anfragen und Routing, die nicht nur für PHP (und auch nicht der Frontcontroller), wie z. B. ein Seitencontroller, oder gar nicht verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top