Por que você mesclar $ _GET e $ _POST em PHP?
-
07-07-2019 - |
Pergunta
Eu só vi este código ao estudar o código fonte wordpress (PHP), você pode ver que eles mergre / transformar todos os get e valores pós em 1 série pedido.
Agora, como eu sei que, $ _GET e $ _POST já estão disponíveis chamando $ _REQUEST SEM usando a função array_merge (), então todas as idéias por que eles fariam isso?
$_REQUEST = array_merge($_GET, $_POST);
Solução
Isso porque o $_REQUEST
padrão é uma fusão de $_GET
, $_POST
E $_COOKIE
. Além disso, a ordem em que as variáveis ??destes superglobals são fundidos em $_REQUEST
está dependente da configuração variables_order
ini e a partir do PHP 5.3.0 também pode ser influenciada por request_order
.
Então, meu palpite é que o desenvolvedor queria ter certeza $_REQUEST
consiste em apenas $_GET
e $_POST
, fundiu nessa ordem particular, se ele não tiver acesso a configurações ini (em um servidor compartilhado por exemplo). Você vê, variables_order
e request_order
não são configuráveis ??em uma base por script.
HTH
Outras dicas
$_REQUEST
contém o conteúdo do $_GET
, $_POST
e matrizes $_COOKIE
por padrão. Talvez eles queiram excluir variáveis ??BISCOITO a partir dele, uma vez que geralmente não é usado para esse fim.
Este é por isso, se você tem uma variável GET e POST uma variável com o mesmo nome, vai escolher a variável POST sobre o GET.
Além disso, você pode não querer os bolinhos na variável _REQUEST $.
Eu não sei especificamente por que foi feito onde você viu, mas eu vi que feito antes, quando algum processamento tem sido feito sobre os valores em um array ou outra e você quer mesclar essas alterações de volta para $ _REQUEST para que qualquer pessoa usando $ _REQUEST terá as mudanças, mesmo que eles foram feitos para o $ _ POST ou $ _GET variáveis.
Este surge em situações como Wordpress tem porque desenvolvedores de plugins poderia estar usando qualquer uma dessas variáveis ??para acessar os dados eo núcleo Wordpress seria necessário para se certificar que todos obter os mesmos dados.
Por que você não iria querer fazê-lo para US $ _REQUEST diretamente? Porque $ _REQUEST contém uma tonelada de informações extra que $ _POST e $ _GET não têm. Você não pode querer aplicar o seu processamento para todos esses bits extras.