Ich schreibe eine App, mit der Benutzer einige ihrer Websiteeinstellungen ändern und ändern können. Ich konstruiere nur einen Formulargenerator, der verschiedene Optionen an verschiedene Plugins senden wird, um den Code zu generieren. Ich frage mich, ob ich Objekte dafür anstelle von mehrdimensionalen Arrays verwenden soll. Wenn ja, wie würde ich meinen Code ändern?
Also jetzt habe ich das gemacht - es ist sehr lang und wird länger werden, also habe ich nur einen Teil davon aus Gründen der Kürze eingefügt: -
%Vor%Was wäre die beste Praxis für so etwas?
Ich würde die Einstellungen in <insert your markup language of choice>
(XML, JSON, YAML, etc.) speichern.
Sie können diese dann in einer $_SESSION
-Variablen zwischenspeichern und beim Bootstrapping auffüllen, wenn sie nicht bereits existieren:
Ob Sie ein Array oder Objekt verwenden oder nicht, hängt nur davon ab, welche Zugriffssyntax Sie bevorzugen:
%Vor%Ich denke, in dieser Route würde ich mit einer strukturierten objektorientierten Route gehen. Sie können ein übergeordnetes Objekt haben, das alle untergeordneten Objekte (Einstellungsgruppen) enthält, und Sie können sogar auf der Einstellungsgruppe als eigenes Objekt abrufen. Jedes Objekt hat seine eigenen Definitionen und Eigenschaften, die im Code dokumentiert werden können, der nützliche Informationen innerhalb einer IDE liefert (wenn Sie Docblocks verwenden).
Ich würde Objekte verwenden. Angenommen, Sie erstellen ein Formular, sollten Sie mehrere Klassen haben:
Form
- um das Formular zu behalten, wird eine Eigenschaft $input_list
(oder $node_list
haben alle Eingaben Input
- um ein einzelnes Eingabeelement zu beschreiben, sollte es Eigenschaften wie label
, type
, tip
etc. Fieldset
- um ein Fieldset zu beschreiben, um weitere Elemente darin zu speichern. Wie die Klasse Form
hätte sie $input_list
, um alle Eingaben in ihr zu speichern. Diese Klassen können für sich allein stehen und können so erweitert werden, dass sie benutzerdefinierte gemeinsame Eingabe-Typen haben (zum Beispiel)
%Vor%Wie andere Leute hier ist auch meine Meinung, dass ich YAML oder JSON verwenden möchte - damit könnte man es sehr einfach machen.
Zum Beispiel ein Beispiel für das JSON-Format Ihrer Datenstruktur:
%Vor%Sie können PHP-Funktionen wie json_encode und json_decode für JSON & lt; - & gt; PHP Datentransformation. Die Verwendung geschweifter Klammern bedeutet, dass die Elemente Objekte sind. Wenn sie durch [und] ersetzt werden, erhalten Sie Arrays ...
Aber auch ein PHP-OOP-Ansatz könnte besonders bei der Erweiterbarkeit erfolgreich eingesetzt werden. Sie könnten eine Hauptklasse-Einstellungen mit einigen Standardeigenschaften und z. magic __get und __set Funktionen und dann können Sie viele Subsettings-Unterklassen implementieren, die sich von dieser Haupt-Settings-Klasse erstrecken.