![]() |
Ratschläge für die Kommunikation zwischen PHP und HTML/JavaScript einer SPA
Guten Tag mygullyianer,
lange Zeit habe ich nativ Programmiert (C / C++) oder mit Java/C#. In den letzten 4-5 Monaten war ich an einem großen Projekt beteiligt, wofür wir eine Web-Applikation mit Offline-Funktion, Mobile-Device-Detection, Responsive-Webdesign und mit allem drum und dran programmiert haben. Als Werkzeuge hatten wir natürlich HTML5/CSS3-Features, JavaS***** mit JQuery und diversen Plugins und das .Net-Framework. Das ganze war eine ASP.NET MVC 4 Applikation. Aber das ist Offtopic. Die Vorteile einer Web-Applikation haben mich überzeugt. Nun ich will ich etwas privates realisieren mit PHP. Das ganze soll eine Single Page Application werden [SPA]. Habe gemerkt, dass der Austausch von Daten zwischen Client und Server mit Ajax ziemlich umständlich ist. Es geht mir hauptsächlich darum dass ich Daten an den Server schicken muss (egal ob per POST oder per GET) und auf die Daten in meinen PHP-Skripten zugreifen kann. Wenn ich jetzt 20 verschiedene Funktionen habe von der Clientseite, so bräuchte ich 20 PHP-Skripte jeweils für eine Funktion. (Ich könnte natürlich die Daten Abfragen und dann dementsprechend die jeweilige Funktion aufrufen, aber ich weis nicht ob das der richtige Weg ist) Als Beispiel: Ich habe eine Liste, will etwas Filtern. Nun sende ich per Ajax Daten an ein PHP-Skript. Der responsed mir etwas und ich verarbeite das ganze mit JavaS***** weiter. Nur stört es mich, das ich mein PHP-Skript explizit nur für diese Funktion anpassen muss. Gibt es Wege, um das ganze ein bisschen zu vereinfachen, vllt. mit einer REST-API? Nur wüsste ich nicht, ob ich bei Web-Hoster ein RESTful-Web-Service implementieren kann, da, soweit ich es mitbekommen habe, teilweise an der Apache-Config gefrickelt werden muss. (Es kann sein, dass ich falsch liege, klärt mich auf :>) PHP ist ziemlich Neuland für mich. Wüsste nicht welche Frameworks ich nutzen soll, kann (,muss?). |
Daten per GET schicken?
Für dein Vorhaben haben sich AJAX, REST bewährt. PHP bietet genug Möglichkeiten um RESTful Webservices zu generieren. Wenn es nur um Daten und CRUD geht, so ist dies in wenigen Minuten fertiggestellt. Von PHP halte ich aber wenig. Was willst du denn genau machen? Abhängig davon kann REST die falsche Wahl sein! |
Natürlich ist AJAX die erste Wahl. Mir ging es um den Aufbau und wie ich es strukturieren werde. Könnte ja genauso auf JQuery verzichten und nur mit JavaS***** nutzen. Nur wer macht das schon? (Außer es gibt Beschränkungen).
Habe noch ein bisschen PHP angeschaut, werde nun das SLIM Framework nutzen. Konzept ist auch schon fast fertig. Was dann? Als Privatperson werde ich mir bestimmt kein IIS-Webserver anschaffen. |
Versteh dich nicht.
Aus deinem ersten Beitrag ist nicht ersichtlich, dass Du die Fragen um die Architektur machst. Aber selbst wenn...was soll man grossartig zur Architektur sagen? Was für ein Konzept? Die genannten Technologien wirst Du doch hoffentlich dafür einsetzen wofür sie gedacht sind! Alles andere wäre ja totaler quatsch. Wie wäre es mit Java EE? |
Naja versuch ich es nochmal:
Zitat:
PHP-Code:
-> Ich habe für jede funktion in javas*****, bei der ich den Server brauche, eine Datei ODER: Ich sende ein Wert an die db_abfrage.php mit, welche Funktion aufgerufen werden soll und muss dann im PHP S***** die Daten auslesen und mit switch / if den String vergleichen und dann entsprechend die Funktion aufrufen -> Irgendwann mal eine riesengroße Abfrage eines String, nur damit ich sagen kann, welche Funktion aufgerufen werden soll. So nun jetzt das Problem: Ich kann mit JavaS***** nicht sagen, was für eine PHP Funktion aufgerufen soll, ich kann nur eine Datei ausführen lassen. Dann brauche ich für jede Funktion die ich in JavaS***** aufrufen will, eine PHP-Datei, oder ich sende ein String mit und muss in einer Datei prüfen mit Verzweigungen, welche Funktion aufgerufen werden soll. |
Du hast von REST gesprochen...jetzt willst du Funktionen oder Skripte aufrufen.
DAS macht keinen Sinn. Daher ist auch für mich unschlüssig was Du machen oder haben willst. Mit Ajax eine REST-API aufzurufen ist sehr einfach...erst recht wenn du die API selbst schreibst. Ich vermute mal, dass du irgendwas falsch verstanden hast (REST?), und uns damit verwirrst. Was willst du also genau machen? Prozesse aufrufen oder Daten abholen/senden? |
Ja ich habe von REST gesprochen, ich hab das Beispeil nur gebracht,damit ich zeigen kann, was mich gestört hat.
Ich verwende jetzt SLIM, es hat sich alle erledigt. Danke totzdem noch mal für deine Zeit |
@Dustail
Funktionen mit REST aufrufen ist absoluter Unsinn! REST ist Ressourcen-orientiert...das hast du anscheinend nicht verstanden. Wenn du Funktionen aufrufen willst, dann nimm SOAP. P.S. Es lohnt sich Kritik anzunehmen...dann läuft man nicht in Gefahr absoluten Quark zu programmieren |
Ich nehme gerne gut begründete Kritik an, wüsste jetzt nicht, wie du darauf kommst, dass ich es nicht tue!
Dein Tipp mit SOAP ist gut, viele dank dafür! |
Ich habe eine Single Page Application, habe eine Datenbank, und einen Apache Server (der vom Web hoster).
Anfangen tut es beim Login. -Eine <form> will ich nicht erstellen, da beim Submit auf die neue Seite weitergeleitet wird, auf das ich im action=""-Attribut verwiesen haben. (Gut, man kann es mit preventDefault unterbinden) -Wenn ich per Ajax und GET/POST daten an den Server schicke, muss ich eine URL angeben -> z.B. login.php. Jetzt habe ich schon eine Datei für nur eine Aufgabe. Was ich will: All meine PHP-Funktionen, egal ob login oder eine datenbank abfrage, in sehr wenigen Dateien unterbringen. Jetzt könnte ich mit Ajax und einem JSON-Wertepaar (z.B. "function" : "login") Werte an diese PHP-Datei senden, müsste aber in dieser PHP-Datei diesen Wertepaar abfragen PHP-Code:
|
Zitat:
1. Du wolltest zunächst REST einsetzen. Mehrere haben die hier doch mitgeteilt, dass REST für diesen Einsatz (Aufruf von Funktionen) völlig ungeeignet ist. 2. Hat zwar ein wenig gedauert bist du das angenommen hast, aber dass SOAP für diesen Zweck eventuell geeigneter ist (schwer zu sagen, wenn man den Gesamtplan nicht kennt) hast du wohl eingesehen. 3. Jetzt hatte man das Gefühl du willst SOAP einsetzen, stattdessen ruft du URLs mit Parametern(?) auf!? Wo ist das Envelope, XML? Boah, sorry. Aber das ist alles total konfus was du schreibst. Beim besten Willen...so ist es unmöglich dir zu helfen. Dir fehlt klipp und klar das Grundwissen... Edit: über mir steht im Grunde schon alles. P.S. Dein verständnis hinkt gewaltig, dustail. amazon hat auch eine REST-API...meinst du für jeden einzelnen Artikel den man über REST abrufen kann, gibt es eine serverseitige Datei? Das würde ja bedeuten, dass es Millionen Dateien mit Code geben würde! Denk man drüber nach... |
Zitat:
|
Bei dem Projekt wurde auch kein php genutzt sondern eine asp.net application. Ich war am Frontend beteiligt. Für die Funktionen wurden jedoch mittels ajax und Post / get benutzt und es waren URLs angegeben, woraufhin im backend dann mit C# Code Funktionen aufgerufen wurden. Ich kann nicht wissen dass das schlechter Design ist.
Ich habe gar nichts genutzt. Ich habe gefragt, wie man am besten so eine Seite aufbaut, bevor ich anfange irgendwas zu implementieren. Im internet bin ich hierbei auf REST gestoßen. Ich hatte im Kopf, URLs auf Funktionen zu routen, jedoch ohne Parameter. Die Daten werden dann mit GET / POST übergeben. Bevor ihr mich hier runterzieht, könntet ihr Hinweise, Referenzen geben, wie man so etwas aufbaut. In meinem ersten Beitrag habe ich bereits erwähnt, das php für mich Neuland ist. |
Zitat:
Aber Beiträge wie Zitat:
Zitat:
Zitat:
Zitat:
Ich bin der Meinung, dass ich euch mein Vorhaben nicht vermitteln konnte. Mal schauen, was daraus wird. |
Ob es sinnvoll ist, kann man nur sagen, wenn man den Anwendungsfall kennt.
Bei der Login-Funktion ist REST verkehrt. SOAP könnte man einsetzen. Wie gesagt, schwer dir hier genau zu helfen. Wann etwas (Design Pattern, Architektur, Infrastruktur, etc.) sinnvoll ist, kannst nur du am besten bewerten. Wir wissen nicht was eingesetzt werden kann, was geleistet werden muss, welche Tools etc. zum Einsatz kommen und und und. Problem bei dir ist, dass du es selbst nicht bewerten kannst, da du nicht weißt, was welche Technik leistet. Da hilft nur lesen. Was definitiv scheiße ist, wenn man auf biegen und brechen eine Technologie einsetzen möchte, die sehr gut ist, aber völlig ungeeignet ist für das was man umsetzen möchte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:11 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.