[Funktion] teilweise default parameter beibehalten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Funktion] teilweise default parameter beibehalten

    Problem:
    Funktion mit beliebig vielen Parametern... Einige/alle davon sind optional, weil ein wert vordefiniert...

    wenn ich die Funktion jetzt aufrufe und die defaultwerte teilweise beibehalten möchte, gibt es da eine Möglichkeit, diese beizubehalten ?

    beispiel:
    PHP-Code:
    <?php
    function testFunction ($param1 'Hallo'$param2 'Leute')
    {
        echo 
    $param1 " " $param2;
    }

    testfunction(); //gibt "hallo leute" aus
    testfunction('''Community'); // gibt "Community" aus
    ?>
    Ziel...
    eine Möglichkeit, beim 2. Funktionsaufruf den ersten Parameter nicht zu überschreiben... '' ergibt ja einen leerstring... mit false und so weiter erziele ich auch kein ergebnis...

    gruss

  • #2
    wenn du einen vordefinierten parameter überschreibst, hast du NUR den überschriebenen wert.

    vorschlag.

    array mir vordefinierten dingen IN DER FKT erstellen.

    parameter alle mit NULL vorbelegen.

    ist nun ein parameter NULL oder '', dann soll der wert aus dem array entnommen werden.

    gut?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      für die zukunft ist das konzept so gedacht, nur für vorhandene Funktionen (relativ viele)...

      ich habs mal versucht, ober anscheinend gibbets keine möglichkeit

      gruss

      Kommentar


      • #4
        ne andere möglichkeit, als die von mir vorgeschlagene, wird es auch nicht geben, wenn du die default-werte haben musst.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          das dachte ich mir auch... hätte ja aber sein können, dass evtl. jmd. ne möglichkeit gekannt hätte...

          Kommentar


          • #6
            Re: [Funktion] teilweise default parameter beibehalten

            Original geschrieben von MoRtAlAn
            eine Möglichkeit, beim 2. Funktionsaufruf den ersten Parameter nicht zu überschreiben... '' ergibt ja einen leerstring... mit false und so weiter erziele ich auch kein ergebnis...
            mein erster gedanke wäre gewesen, einfach gar keinen wert an dieser stelle anzugeben, also nur ein komma zu setzen, um einen parameter zu "überspringen".

            testfunction( , 'Community');

            bei genaueren drüber nachdenken erscheint es mir dann allerdings auch schon wieder unsinnig :-)


            wenn dies nicht funktioniert, solltest du dich vielleicht mal mit http://www.php.net/manual/de/functio...iable-arg-list beschäftigen, vielleicht führt dich das ja zum ziel ...
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              mh... würde halt auch wieder mehraufwand bedeuten...

              mh... wobei ich könnte ja mal ne "wrapper" funktion bauen, über die ich eine Funktion aufrufe... mal schauen!

              thx erstmal

              Kommentar


              • #8
                mh... nee, geht wohl auch nicht... ich komme nicht an die parameter der funktion heran...

                Kommentar


                • #9
                  Original geschrieben von MoRtAlAn
                  ich komme nicht an die parameter der funktion heran...
                  wie meinen? / wie gemacht?
                  h.a.n.d.
                  Schmalle

                  http://impressed.by
                  http://blog.schmalenberger.it



                  Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                  ... nur ohne :-)

                  Kommentar


                  • #10
                    ich will von außen auf die Parameter einer funktion zugreifen (mit den werten)

                    http://www.php.net/manual/de/function.func-get-args.php

                    Kommentar


                    • #11
                      du musst irgendwo festhalten, welche parameter für welche funktion standard sind, mit ner wrapperfunktion evtl. so
                      PHP-Code:
                      define('USE_DEFAULT', -1);
                      define('INVALID_CALL', -2);
                      define('UNKNOWN_FUNCTION', -3);

                      function 
                      wrap()
                      {
                          if (
                      func_num_args()==0)
                              return 
                      INVALID_CALL;
                          
                          
                      $fcts=array(
                              
                      'pow' => array(22),
                              
                      'base_convert' => array(8102),
                              
                      'time' => array()
                          );

                          
                      $args=func_get_args();
                          if (!
                      array_key_exists($args[0], $fcts) or !function_exists($args[0]))
                              return 
                      UNKNOWN_FUNCTION;

                          
                      $arguments=$fcts[$args[0]];
                          
                      $fct=$args[0];
                          
                      array_shift($args);

                          if (
                      count($arguments)==0)
                              return 
                      $fct();
                          if(
                      count($arguments)<count($args))
                              return 
                      INVALID_CALL;
                          
                          foreach(
                      $args as $key => $value)
                              if (
                      $value!==USE_DEFAULT)
                                    
                      $arguments[$key]=$value;
                          
                      $fct='$result='.$fct.'('.implode(', '$arguments).');';

                          eval(
                      $fct);
                          
                          return 
                      $result;

                      ohne gewähr, aber ich find es sieht logisch aus *g*
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar

                      Lädt...
                      X