Funktion mit festem Parameter

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Funktion mit festem Parameter

    Hallo zusammen,
    ich habe gerade ein kleines Problem und denke das es für eich ein einfaches ist dies zu lösen. Ich möchte eine Funktion bauen.
    Diese hat 4 Parameter
    3 davon haben vorgegebene Werte, vovon 2 aus einer Variabe stammen sollen.
    Hier mal der Code:

    Quellcode

    1. $shorter="http://blablub.blubb/page.php";
    2. $shorturlsig="xxxxxxxxxxxxxxxx";
    3. function shorturl($url,$check=0,$shorter=$shorturl,$sig=$shorturlsig) {
    4. $post = array(
    5. 'signature' => $sig,
    6. 'action' => 'shorturl',
    7. 'url' => $url,
    8. 'format' => 'simple');
    9. $response = http_parse_message(http_post_fields($shorter,$post));
    10. if($check==0) {
    11. return $response->body;
    12. } else {
    13. if($response->responseCode == 200 && $response->responseStatus == 'OK') {
    14. return $response->body;
    15. } else {
    16. return "FEHLER";
    17. }
    18. }
    19. }
    20. $url="http://www.test.bla/test.html";
    21. $minurl = shorturl($url);
    22. echo $minurl;
    Alles anzeigen


    Leider bekomme ich bei diesem Aufbau immer einen Fehler. Ich weiß ich könnte die werte aus den beiden Variablen "$shorter" und "$shorturlsig" direkt in die Funktion schreiben, aber sie sollen zukünftig aus einer DB gelesen werden. Ich möchte halt nur vermeiden, das bei dem Funktionsaufruf diese Parameter mit angegeben werden müssen.

    Gibt es da eine Lösung zu???

    MfG
    Boyge
  • Du könntest ein Array mit den Defaultwerten definieren und bei deinem Funktionsaufruf die nötigen Elemente überschreiben:

    Quellcode

    1. $default_param = array('check' => 0, 'shorter' =>$shorturl, 'sig' => $shorturlsig);
    2. ...
    3. $param = $default_param;
    4. $param['url'] = $url;
    5. $param['check'] = 2;
    6. $minurl = shorturl($param);


    Noch eleganter wird es mit einem Objekt als Parameter:

    Quellcode

    1. $minurl1 = shorturl(new Param($url));
    2. $minurl2 = shorturl(new Param($url, 3));

    Im Konstruktor von Param würde man dann mit func_num_args und func_get_arg arbeiten, um eine variable Anzahl Parameter übergeben zu können. Ist nur die Frage, ob sich das vom Aufwand her lohnt.

    Thomas