PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lambda Funktion weiterführung..(varialbe als parameter ($_POST -> $postarr)


R4Zz0R
16.02.2011, 14:20:29
Hi leute ...

Alsooo..
In meinem vorherigen beitrag ging es ja um lambda funktionen.
Hier möchte ich nun meine erweiterung des codes ein wenig präsentieren (ungetestet) und gleich eines meiner probleme behandeln.

Meine ungetestete erweiterung bezieht sich darauf in der varialbe fpa zu prüfen ob sich dort ein komma befindet und es notfals in ein array umzuwandeln und eine funktion auch mit mehreren parametern aufzurufen.

Werde ich gleich erst testen daher hier mal der ungetestete code:


function funkControler($getarr,$touse) {
$funkt = $getarr['do'];
$fparam = $getarr['fpa'];
$fpaarr = preg_match('/,/',$fparam,$match);
if(!empty($match)) {
$fparam = explode(',',$fparam);
if(is_array($fparam)) {
$run = call_user_func_array($touse[$funkt],$fparam);
}
} else {
if(isset($funkt)) {
if(!empty($fparam)) {
$run = call_user_func($touse[$funkt],$fparam);
} else {
$run = $touse[$funkt]();
}
}
}
return $run;
}



Nun aber was anderes ich habe funktionen die als übergabeparameter mein selbst erstelltes und gefiltertes array ($_POST wird zu $postarr) der post varialben benötigt.

wie kann ich den nun der funktion sagen das sie diese variable als parameter benutzen soll ? ...

Ich werde gleich meine idee mal überprüfen ob das funktioniert :(wäre aber echt umständlich daher hoffe ich auf bessere ideen.)

Pseudocode:

if($postarr['fpa'] == 'post') {
$fparam = $postarr;
}


Vorschläge ?

LG
R4Zz0R

R4Zz0R
18.02.2011, 13:21:46
Also ..

Bisher funktioniert es grundsätzlich.
Ich hab das ganze jetzt aber ein wenig anders gestaltet.


function funkControler($getarr,$touse,$postarr) {
$funkt = $getarr['do'];
$fparam = $getarr['fpa'];
if($fparam == 'post') {
$run = call_user_func_array($touse[$funkt],$postarr);

} else {
if(isset($funkt)) {
if(!empty($fparam)) {
$run = call_user_func($touse[$funkt],$fparam);
} else {
$run = $touse[$funkt]();
}
}
}
return $run;
}



Innheralb dieser funktion steht $postarr immernoch als assoziatives arrray zur verfügung.
Aber in der aufgerufenen funktion nicht da verwandelt sich das array plotzlich in einen string und es ist nur der erste übergebene wert verfügbar und wenn ich versuche den inhalt des arrays über den index aufzurufen ($postarr['navname']) bekomme ich nur den ersten buchstaben ... hab ich da irgentwas übersehen ?

LG
R4Zz0R

R4Zz0R
18.02.2011, 13:33:46
Möööeppp ...

Ja erledigt ... ich übergebe ja das array als einzelne werte ...

aus $postarr wird ->
$postarr[0] = wert1 für funktion
$postarr[1] = wert2 für funktion

Och mensch kann ich blöd sein !