不要对不能信任的数据使用
extract(),例如用户的输入(
$_GET
,
…)。如果这样做,举例
说,要临时运行依赖于
register_globals 的老代码,要确保使用不会覆盖的 extract_type 值,
例如
EXTR_SKIP,并且要留意应该按照 php.ini 中由 variables_order 定义的顺序来提取。
extract() 的一种可能用法是将 wddx_deserialize() 返回的结合数组中的内容导入到符号表变
量中去。
Example#1 extract() 例子
代码如下
:
<?php
/* 假定 $var_array 是 wddx_deserialize 返回的数组*/
$size
= “large”;
$var_array
=
array
(”color” => “blue”,
“size” => “medium”,
“shape” => “sphere”);
extract(
$var_array
, EXTR_PREFIX_SAME, “wddx”);
echo
“
$color
,
$size
,
$shape
,
$wddx_size
\n”;
?>
上例将输出:
blue, large, sphere, medium
$size
没有被覆盖,因为指定了 EXTR_PREFIX_SAME,这使得
$wddx_size
被建立。如果指
定了
EXTR_SKIP,则
$wddx_size
也不会被建立。EXTR_OVERWRITE 将使
$size
的值为
“medium”,EXTR_PREFIX_ALL 将建立新变量
$wddx_color
,
$wddx_size
和
$wddx_shape
。
必须使用关联数组,数字索引的数组将不会产生结果,除非用了
EXTR_PREFIX_ALL 或者
EXTR_PREFIX_INVALID。