10

ワードプレスのソースコード(PHP)を勉強しているときにこのコードを見たところ、すべてのget値とpost値を1つのリクエスト配列にマージ/変換していることがわかります。

私が知っているように、$_GETと$_POSTは、array_merge()関数を使用せずに$ _REQUESTを呼び出すことですでに使用可能なっているので、なぜこれを行うのか考えてみてください。

$_REQUEST = array_merge($_GET, $_POST);
4

4 に答える 4

20

これは、デフォルトが, AND$_REQUESTのマージであるためです。また、これらのスーパーグローバルの変数がマージされる順序はini 設定に依存し、PHP 5.3.0 の時点では、 . したがって、開発者が ini 設定にアクセスできない場合 (たとえば、共有ホスト上で) 、開発者は と のみで構成され、その特定の順序でマージされることを確認したかったと思います。ご覧のとおり、スクリプトごとに構成することはできません。$_GET$_POST$_COOKIE$_REQUESTvariables_orderrequest_order$_REQUEST$_GET$_POSTvariables_orderrequest_order

HTH

于 2009-09-14T00:19:35.970 に答える
6

$_REQUEST$_GETデフォルトでは、、、$_POSTおよび$_COOKIE配列の内容が含まれます。通常、その目的には使用されないため、COOKIE変数を除外したい場合があります。

于 2009-09-14T00:13:02.237 に答える
2

これは、同じ名前のGET変数とPOST変数がある場合、GET変数よりもPO​​ST変数を選択するためです。

また、$_REQUEST変数にCookieを入れたくない場合もあります。

于 2009-09-14T00:12:26.823 に答える
1

なぜそれが見た場所で行われたのか具体的にはわかりませんが、ある配列または別の配列の値に対して何らかの処理が行われ、それらの変更を$ _REQUESTにマージして、誰もが$ _REQUESTを使用すると、$_POSTまたは$_GET変数に対して行われた場合でも、変更が取得されます。

これは、プラグイン開発者がこれらの変数のいずれかを使用してデータにアクセスする可能性があり、Wordpressコアがすべて同じデータを取得することを確認する必要があるため、Wordpressのような状況で発生します。

$ _REQUESTに直接やりたくないのはなぜですか?$ _REQUESTには、$_POSTと$_GETにはない大量の追加情報が含まれているためです。これらすべての余分なビットに処理を適用したくない場合があります。

于 2009-09-14T00:12:27.760 に答える