Warum sollten Sie $_GET und $_POST in PHP zusammenführen?
-
07-07-2019 - |
Frage
Ich habe diesen Code gerade gesehen, als ich den WordPress-Quellcode (PHP) studiert habe. Sie können sehen, dass alle Get- und Post-Werte in einem Anforderungsarray zusammengeführt/umgewandelt werden.
Soweit ich weiß, sind $_GET und $_POST bereits durch Aufruf von $_REQUEST verfügbar OHNE mit der Funktion array_merge(), also irgendwelche Ideen, warum sie das tun würden?
$_REQUEST = array_merge($_GET, $_POST);
Lösung
Das ist, weil der Standard $_REQUEST
ein Zusammenschluss von $_GET
, $_POST
UND $_COOKIE
ist. Auch in welcher Reihenfolge die Variablen dieser superglobals verschmolzen werden in $_REQUEST
ist abhängig von der ini Einstellung variables_order
und als PHP 5.3.0 kann auch durch request_order
beeinflusst werden.
Also meine Vermutung ist, dass der Entwickler machen wollte sicher $_REQUEST
besteht aus nur $_GET
und $_POST
fusionierte in dieser bestimmten Reihenfolge, wenn er keinen Zugang zu ini-Einstellungen hat (auf einem gemeinsamen Host zum Beispiel). Sie sehen, variables_order
und request_order
auf einer Basis pro Skript nicht konfigurierbar sind.
HTH
Andere Tipps
$_REQUEST
enthält den Inhalt von $_GET
, $_POST
und $_COOKIE
Arrays standardmäßig. Vielleicht wollen sie COOKIE Variablen davon ausschließen, da es in der Regel nicht für diesen Zweck verwendet wird.
Das ist so, wenn Sie ein GET-Variable und eine POST-Variablen mit dem gleichen Namen haben, wird die POST-Variablen über die eine GET wählen.
Auch können Sie nicht wollen, die Cookies in der $ _REQUEST Variable.
Ich weiß nicht genau, warum es dort gemacht wurde, wo Sie es gesehen haben, aber ich habe das schon einmal gesehen, als die Werte in dem einen oder anderen Array verarbeitet wurden und Sie diese Änderungen wieder in $_REQUEST zusammenführen möchten, damit jeder Wenn Sie $_REQUEST verwenden, werden die Änderungen abgerufen, auch wenn sie an den Variablen $_POST oder $_GET vorgenommen wurden.
Dies kommt in Situationen wie Wordpress vor, weil Plugin-Entwickler jede dieser Variablen verwenden könnten, um auf Daten zuzugreifen, und der Wordpress-Kern sicherstellen müsste, dass sie alle die gleichen Daten erhalten.
Warum sollten Sie es nicht direkt mit $_REQUEST machen?Weil $_REQUEST eine Menge zusätzlicher Informationen enthält, die $_POST und $_GET nicht haben.Möglicherweise möchten Sie Ihre Verarbeitung nicht auf all diese zusätzlichen Bits anwenden.