Iemand met een mening over mijn wrapper van extract () ???
Deze versie kan alleen ook nested arrays extracten ;), nog niet echt fully getest.. maar wat vinden jullie ervan? misschien dat jullie wat testjes kunnen voeren


<?php
function extract_nested (&$array, $type = EXTR_OVERWRITE, $prefix = '')
{
/*
@ Is the array really an array?
*/
if (!is_array ($array))
{
trigger_error ('extract_nested (): First argument should be an array', E_USER_WARNING);
}

/*
@ If the prefix is set, check if the prefix matches an acceptable regex pattern
@ (the one used for variables)
*/
if (!empty ($prefix) && !preg_match ('#^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$#', $prefix))
{
trigger_error ('extract_nested (): First argument should be an array', E_USER_WARNING);
}

/*
@ Loop thru the array
*/
foreach ($array as $key => $val)
{
/*
@ If the key isn't an array extract it as we need to do
*/
if (!is_array ($array[$key]))
{
switch ($type)
{
case EXTR_OVERWRITE:
$GLOBALS[$key] = $val;
break;
case EXTR_SKIP:
$GLOBALS[$key] = isset ($GLOBALS[$key]) ? $GLOBALS[$key] : $val;
break;
case EXTR_PREFIX_SAME:
if (isset ($GLOBALS[$key]))
{
$GLOBALS[$prefix . $key] = $val;
}
else
{
$GLOBALS[$key] = $val;
}
break;
case EXTR_PREFIX_ALL:
$GLOBALS[$prefix . $key] = $val;
break;
case EXTR_PREFIX_INVALID:
if (ctype_digit ($key{0}))
{
$GLOBALS[$prefix . $key] = $val;
}
else
{
$GLOBALS[$key] = $val;
}
break;
case EXTR_IF_EXISTS:
if (isset ($GLOBALS[$key]))
{
$GLOBALS[$key] = $val;
}
break;
case EXTR_PREFIX_IF_EXISTS:
if (isset ($GLOBALS[$key]))
{
$GLOBALS[$prefix . $key] = $val;
}
else
{
$GLOBALS[$key] = $val;
}
break;
case EXTR_REFS:
$GLOBALS[$key] =& $array[$key];
break;
}
}
/*
@ The key is an array... use the function on that index
*/
else
{
nested_extract ($array[$key], $type, $prefix);
}
}
}
?>
Je tweede trigger_error is niet helemaal goed, maar hij zal vast wel werken.

Alleen wat heb je eraan?
ik vraag me af waarom zou je hem testen als er een goede waarde inzit.. Het kost processor tijd (preg_match is niet snel)

Verder goed gebruik van php5 functies.

edit: laat maar http://php.net/extract voor info wat het ongeveer doet

Reageren