Moin;
natürlich muss man beim Entwurf der Datenstruktur (DS) berücksichtigen ob sie transportiert werden muss oder nicht. Instanzen zu DB-Anwendungen müssen z.B. nicht transportiert werden und können deswegen viel komplexer aussehen wie Parameterstrukturen für Webanwendungen die bei jeder Zustandsänderung serialisiert und per HTTP transportiert werden müssen.
Aber auch hier gibt es Möglichkeiten, aus einfachen Schlüssel-Werte-Paaren tiefer gegliederte DS zu machen einfach dadurch daß man die Namen der <input>-Felder, also die Schlüssel selbst strukturiert. Z.B. so:
name="data[person][name]"
name="data[person][vname]"
name="data[person][plz]"
name="data[person][ort]"
name="parameter[action][submit][insert]"
name="parameter[action][submit][update]"
name="parameter[action][submit][delete]"
und bekommt somit im $_POST Array eine entsprechende Datenstruktur die außerdem beliebig tief gestaffelt sein kann. Serverseitig kann man so die Schlüsselparameter von den übertragenen Nutzdaten recht einfach auseinanderhalten, PHP bietet dieses Feature schon immer was viele Entwickler gar nicht kennen, weil sie allein schon mit dem Begriffen Schlüsselparameter und Parameter-Kontrollstruktur nichts anfangen können.
Du siehst also, Dreh- und Angelpunkt einer Anwendung ist stets die Datenstruktur und obenstehendes Beispiel sollte mehr als deutlich machen wie das zum gegebenen Design des Serializers (Percentencoding, Enctype application/x-www-form-urlencoded) passend gemacht werden kann.
Man muss nur die richtigen Ideen haben 😉