Die Verwendung von Globals macht Ihren Code schwer zu testen und ist daher anfälliger für Fehler, nicht sicher und unvorhersehbar. Deshalb übergeben wir die gewünschten Variablen innerhalb einer Funktion / eines Objekts. Meine Frage ist also einfach:
Verstoßen $ _POST, $ _GET usw. gegen das Kapselungsprinzip ?
Ich denke, um die Kontrolle über diese Variablen auf OO-Weise zu behalten, wäre es eine ideale Lösung, dem Code einige Zeilen wie diese hinzuzufügen:
// Convert the $_GET array to an object
$get = json_decode(json_encode($_GET), FALSE); // stackoverflow.com/a/1869147
// Stop it from being included from anywhere
unset($_GET);
// Small example of what could be done later on
$DB = new PDO(/* ... */);
$Person = new Person($DB, $get->id);
Ich habe das nirgendwo gesehen, nicht einmal ein Tutorial oder eine Empfehlung. Außerdem können wir deutlich sehen, dass der obige Code viel einfacher zu testen ist als einer, der ein $Person = new Person($DB, $_GET['id']);
oder sogar (das Hässliche) enthält, $Person = new Person($DB);
da Sie ein Scheinobjekt verwenden können $get
.
Ist der Code oben in die richtige Richtung oder fehlt mir etwas?
EDIT: Nach einigen Untersuchungen ( Zend Framework und Cake PHP ), wie Alexander Kuzmin vorgeschlagen hat, scheint es das Richtige zu sein. Sie sind wahrscheinlich zu groß für mich, um in den Code-Geldautomaten zu graben, aber ich werde es mir merken.