フォームバリデーター用の他の誰かのコードで動作するコードに出くわしました。投稿されたフォームデータから値を返すはずでした。とにかく、それは常に戻ってきNULL
ました。これは関数全体です (このコードはある時点で機能したと仮定しています)。
function _getValue($field)
{
global ${$field};
return ${$field};
}
他の関数のコンテキストから、(この場合は) $_POST 変数から値を取得しようとしていることがわかりました。関数を次のように変更すると、すべてが魅力的に機能しました。
function _getValue($field)
{
// $_REQUEST should hold $_GET and $_POST values
return $_REQUEST[$field];
}
だから私の質問は...global ${$field}
この文脈で一体何を意味するのですか? 私はそれが何であるかを知っていますが、彼らがその関数${$field}
に渡されたとしましょう。email
このグローバル$email
変数はどこから来たのですか?
元の機能はどのように機能したと思われますか? 「スーパーグローバル」か何かと呼ばれるものがあることは知っていますが、それは悪いことです。これは関連していますか?それが機能しなくなった理由でしょうか?ホストはスーパーグローバルをオフにしましたか?
[編集]質問の言い方に明らかに混乱がありました。${$field} と $$field の意味は知っていますが、方法がわかりません
global ${$field};
return ${$field};
ユーザーが次のようなフォームに入れた値を返します
<input name="email">
あなたが電話するとき
$this->_getValue('email');