Ankündigung

Einklappen
Keine Ankündigung bisher.

echter Alias einer Funktion

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von agrajag Beitrag anzeigen
    Das "Problem" löst man aber nicht mit Aliasen sondern mit einer guten Dokumentation...
    Da gebe ich dir recht . Das ist das A und O von Klassen oder Funktionen eine Funktions/Klassen- Referenz zu erstellen, sodass mögliche Entwicklicker sich damit auskennen können. (Ohne sich jetzt direkt die Source angucken zu müssen.)
    [B]Mfg Tomtaz[/B]
    [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

    Kommentar


    • #17
      -------------------------------------------------

      Danke für eure Antworten. Es ist scheinbar nicht einfach möglich, und das war was ich wissen wollte.

      -------------------------------------------------

      Zitat von brian johnson Beitrag anzeigen

      willst du fehler intelligent erfassen, so verwende exceptions. du kannst auch php fehler gut debuggen mit set_error_handler und debug_print_backtrace in deiner genannten form debuggen....
      genau, das ist exakt das was ich mache.

      Ich konnte es nun auf eine kompliziertere Art lösen, die inzwischen recht gut funktioniert(nicht perfekt für die Performance, aber da die funktionen nur bei Bedarf geladen werden ist das egal.)

      PHP-Code:
      function create_new_alias($function,$num_args,$alias){
        global 
      $debug;
        
      $debug->add_alias($function,$alias);  
       
      //now the debugger will search for $function, replace the name with $alias and then it will delete the index before(the alias function)
        
      for($i=0;$i<$num_args;$i++){ //create the arguments...
          
      $args.="\$arg_$i,";
        }
         
      $args=rtrim($args,","); 
        
         
      //and now we will create the alias function
         
      eval("
         function 
      $alias($args){
          return 
      $function($args);
         }
         "
      );
      }
      function 
      foo($val){
       echo 
      $val;
      }
      create_new_alias("bar",1,"foo");
      bar("Juhuuu"); // echos now Juhuuu 

      Kommentar


      • #18
        uhhhh, da ist das gefährliche eval drin...
        [B]Mfg Tomtaz[/B]
        [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

        Kommentar


        • #19
          Beim Variablen ist ja schließlich ein "$" davor, was die Übersichtlichkeit des Codes vermindert
          jo - lol - das verwirrt kolossal.
          Eine if-else-Abfrage nimmt, ordentlich geschrieben eine Menge Platz weg. Platzsparend geht es mit einem ternären Operator.

          Kommentar


          • #20
            //now the debugger will search for $function, replace the name with $alias and then it will delete the index before(the alias function)
            Was hat denn der Debugger damit zu tun? Und den zweiten Teil "will delete the index before" sehe ich garnicht.

            Kommentar


            • #21
              Ehrlich ich kapiers nicht, was das für nen Mehrwert darstellt.

              Und was hier passiert, brauche ich ja wohl nicht zu sagen...
              PHP-Code:
              create_new_alias("bar",1,"foo");
              bar("Juhuuu"); // echos now Juhuuu  

              // ...

              // 1000 Zeilen später oder im Include
              create_new_alias("bar",1,"foo");
              bar("Yippieee"); // Oh No - keine Yippieee sondern nur ein Fatal error :( 
              [COLOR="#F5F5FF"]--[/COLOR]
              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
              [COLOR="#F5F5FF"]
              --[/COLOR]

              Kommentar


              • #22
                Zitat von nikosch Beitrag anzeigen
                Ehrlich ich kapiers nicht, was das für nen Mehrwert darstellt.

                Und was hier passiert, brauche ich ja wohl nicht zu sagen...
                PHP-Code:
                create_new_alias("bar",1,"foo");
                bar("Juhuuu"); // echos now Juhuuu  

                // ...

                // 1000 Zeilen später oder im Include
                create_new_alias("bar",1,"foo");
                bar("Yippieee"); // Oh No - keine Yippieee sondern nur ein Fatal error :( 
                unwahrscheinlich, diese befinden sich natürlich in den Funktions includes bei den Funktionen die sie betreffen. ansonsten haben die nirgens was zu suchen. Die Funktionsincludes werden außerdem getestet bevor sie verwendet werden, da würde ein Fehler auffallen.

                Jop, ich verwende Eval eh ungerne, nachdem Funktionsnamen aber ohnehin alphanumerisch sind kann ich das umgehen indem ich den rest weglösche

                @ David
                den Debugger werde ich hier nicht posten xD, der ist ziemlich lang^^ der backtrace wird in einem array gespeichert, allerdings ohne der Aliasfunktion dazwischen, das ist sinnlose information.

                @Koala
                Die frage war nicht ob es so auch geht, sonder ob es eine php eigene Funtkion dafür gibt, sowie in anderen Programmiersprachen.


                Aber leider scheint es keine zu geben. Danke an alle die mir helfen wollten.

                Kommentar


                • #23
                  Kurz und bündig: was du willst, ist Dummsinn und du solltest dein Softwaredesign überdenken. STOP Unterredung beendet. STOP Wünsche noch frohes Programmieren. STOP
                  Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                  Kommentar


                  • #24
                    Aua.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #25
                      Zitat von Manko10 Beitrag anzeigen
                      Kurz und bündig: was du willst, ist Dummsinn und du solltest dein Softwaredesign überdenken. STOP Unterredung beendet. STOP Wünsche noch frohes Programmieren. STOP
                      und da müsst ihr erst 3 seiten vollspammen? das hab ich doch schon auf der ersten gesagt.
                      [B]PHP4?!?[/B]>>>[B]Aktuelle[/B] PHP Version: [B]5.2.11 || 5.3.0
                      [URL="http://en.opensuse.org/Factory/News"]Suse 11.2 *vorfreude*[/URL]
                      [/B]

                      Kommentar


                      • #26
                        Ich weiß, aber wer nicht hören will, muss fühlen.
                        Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

                        Kommentar

                        Lädt...
                        X