molily: Verschiedene Ajax Requests, nur eine PHP ?

Beitrag lesen

Hallo,

Durch die vielen unterschiedlichen Requests gibt es nun schon ca. 6 PHP Dateien, für verschiedene DB Abfragen.

Generell ist nichts dagegen zu sagen, dass *verschiedene* Datenbank-Anfragen in *verschiedenen* Dateien gemacht werden. Nur wenn sie inhaltlich zusammenhängen oder immer zusammen auftreten, kann man sie in eine Datei schreiben.

Trenne dich davon, dass URLs eins zu eins auf PHP-Scripte mappen müssen. Das tun sie in keiner größeren PHP-Webanwendung. Die arbeiten meist mit dem MVC-Pattern und »resourceful URLs«. Von welchem PHP-Script eine Anfrage letztlich verarbeitet wird, ist von der URL unabhängig und eine Frage des Routings. Üblicherweise landet eine Anfrage in irgendeinem Controller, der sich aus impliziten Konventionen oder expliziten Routing-Regeln ergibt.

Das mag auf deine Anwendung vielleicht nicht zutreffen, aber ein solches Setup hat sich als sehr flexibel und skalierbar erwiesen.

Würde es eine Möglichkeit geben, nur eine PHP Datei wie "ajax.php" zu nehmen, in der aber unterschiedliche DB Abfragen drin sind?

Es wäre eine sehr schlechte Idee, die Logik für sämtliche Ressourcen, die per XMLHttpRequest angesprochen werden, in einer Datei »ajax.php« unterzubringen. Was im Detail erhoffst du dir davon?

Wenn das Grundproblem ist, dass du in diesen sechs PHP-Dateien Code wiederholst, um die Datenbankabfragen zu machen, dann löse dieses Problem, indem du Code auslagerst und wieder verwendest. Das ist sowohl durch objektorientierte als auch durch prozedurale/funktionale Programmierpattern möglich. Grundlegende Aufgaben wie das Erstellen der Datenbank-Verbindung und das Serialisieren der Antwort als JSON sollten zentral erledigt werden.

Wie aber könnte man dann gezielt die richtige PHP Funktion ansteuern?

So etwas macht man aus verschiedenen Gründen nicht. Die Schnittstelle, die du per HTTP anbietest, sollte nicht eins zu eins auf PHP-Funktionen abbilden. Das bringt einen in große Wartungsprobleme, weil es »Tight Coupling« ist. (So simpel machen es selbst die angesprochenen Remote Procedure Calls nicht.)

Mathias