wrapper für printf?

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

  • wrapper für printf?

    hiho@ll

    mir gehts hier weniger um das was das topic beschreibt, also einen wrapper für printf, als viel mehr, ob und wie es funktionieren kann

    was ich mich frag:
    wenn printf eine variable argumentliste hat/haben kann und diese argumentliste mit func_get_arg bzw. func_num_args abgefragt werden kann
    wie kann ich einen wrapper für eine funktion schreiben, die eine variable argumentliste kriegt?

    stellt euch vor ich möcht mein eigenes printf schreiben, dass aber vor jeden string, dass es ausgibt noch ein "Hallo" davorschreibt
    also z.B.

    public function myprintf($str){
    print("HALLO");
    printf($str,VARARGLIST);
    }

    wie krieg ich nun VARARGLIST so hin, dass printf mit den argumenten von myprintf aufgerufen wird?

    d.h. wen ich
    myprintf("%s %s\n","hallo","leutz");
    aufrufe
    seh ich dann:
    HALLOhallo leutz

    thx@ll

  • #2
    geht ja in die richtung: http://de3.php.net/manual/en/ref.overload.php ?

    dann schon so, wie du sagst - mit func_get_args() die argumente abfangen, mit foreach ablaufen und ausgeben bzw. für die ausgabe vorbereiten.

    der sinn des ganzen ist aber in der tat fragwürdig.

    Kommentar


    • #3
      hmm

      wenn ich das hier richtig verstanden hab, dann ist die lösung für mein "problem" ziemlich heftig
      ich finds etwas umständlich

      also hab ich etwas weitergegraben in php.net doku
      und ich habs zwar noch nicht probiert, aber mir wär für mein myprintf beispiel folgendes eingefallen

      public function myprintf($str){
      print("HALLO");
      call_user_func_array("printf",func_get_args());
      }

      aber da bin ich mir nicht sicher ob das geht, denn call_user_func_array ruft eine user defined function auf (sollte es)
      und ich weiß nicht ob printf als user defined akzeptiert werden würde
      *probierentu*
      *tippentu*

      hmm
      das obige beispiel funktioniert nicht
      aber:
      public function myprintf($str){
      print("HALLO");
      $myarray=func_get_args();
      call_user_func_array("printf",$myarray);
      }

      funktioniert super!

      zumindest hab ich einen fehler bei (ganz) obigem beispiel gekriegt
      PHP Fatal error: func_get_args(): Can't be used as a function parameter in /home/jeti/Projects/CCS/client/test.php on line 10

      weiß aber nicht ganz warum
      sollt jedenfalls keinen unterschied machen, ob ich das ergebnis zwischenspeicher oder nicht

      naja, es geht jedenfalls ;-)

      Kommentar


      • #4
        lesen bildet:
        Note: Because this function depends on the current scope to determine parameter details, it cannot be used as a function parameter. If you must pass this value, assign the results to a variable, and pass the variable.
        viel erfolg.

        Kommentar

        Lädt...
        X