砥石さんに賛成です。get_defined_vars()
「マルチアンセット」トリックに最適です。以下のこのメソッドは、すべての変数の設定を解除します。foreach ループ内の名前のない配列内にあるものを除くすべて。
foreach(get_defined_vars() as $k=>$y){
if( !in_array( $k,
array(
'myRequredVariableName1',
'myRequredVariableName2',
'_ENV',
'_SESSION',
'_COOKIE',
'HTTP_SESSION_VARS',
'HTTP_COOKIE_VARS'
)))
{ $$k=null; unset($$k);}
unset($y, $k);
}
// Check for leftovers
header('Content-type:text/plain; charset=utf-8');
var_export(get_defined_vars());
exit;
値は、実際には '$' のない変数名です。変数 variableunset($$k);
は、REAL および定義済みのものと一致し、存在する場合は破棄します。したがって、このようにして、システムに残されたものを完全に制御できます。
一部の共有ホスティング設定は _SERVER スーパーグローバルのみに依存しているため、_ENV、HTTP_SESSION_VARS、HTTP_COOKIE_VARS はまったく必要ないことに注意してください。ほとんどの場合、常に _COOKIE と _SESSION を保持したいでしょうが、_GET と _POST や _FILES は保持したくないでしょう。決定は異なります。このトリックを実稼働環境に適用する前に、配列内に何を置くべきかを自分でテストして確認してください。