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

  • echter Alias einer Funktion

    Ich würde gerne einen Alias für eine Funktion machen.

    dh dass zb foo() dasselbe ist wie bar(), in den meisten Programmiersprachen kann man das machen, bei Php konnte ich das bisher nicht finden

    Das Problem ist, ich hätte gerne dass die Funktion wirklich gleich ist. Natürlich könnte ich etwas machen wie
    PHP-Code:
    function foo(){
     return 
    "Hallo";
    }
    function 
    bar(){
     return 
    foo();

    oder ich könnde die Funktion in eine Variable geben, aber das wäre dann nicht mehr genau dieselbe Funktion. (Beim Variablen ist ja schließlich ein "$" davor, was die Übersichtlichkeit des Codes vermindert)

    Warum wäre es mir direkt lieber? Ganz einfach, es würde das Debuggen vereinfachen. Da ich eigene Error handler verwende, die den Fehler etwas übersichtlicher, mit Parametern und Funktionspfaden darstellt, habe ich mit der obengenannten Möglichkeit das Problem dass sich das ganze unnötig verschachtelt...

  • #2
    Für was ist es denn nötig, genau die selbe Funktion 2 mal mit unterschiedlichen Namen zu haben?

    Kommentar


    • #3
      Nur weil viele PHP-Funktionen Aliase für andere sind, heißt das nicht, dass man das selbst auch so machen muss. Bei PHP ist das einfach historisch gewachsen und dient der Kompatibilität. Ist das bei dir etwa auch so?
      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


      • #4
        nein, das dient der Nutzerfreundlichkeit des Programmierers

        es trifft sich manchmal dass eine Funktion auf verschiedene arten gebraucht werden kann, wenn der Name der Funktion aber nur auf eine der Arten zutrifft muss ein scriptfremder Programmierer lange suchen bis er sie findet.

        Kommentar


        • #5
          zum beispiel?

          Kommentar


          • #6
            PHP-Code:
            username_exists();
            email_exists();   // wird auch gesucht, @ ist im Username nicht erlaubt
            find_user();
            find_email();
            get_user_id();

            -------------------------------
            ###### Beispiele #########
            -------------------------------

            ###### Registrieren #######
            if(username_exists("foo")){
             echo 
            "Username existiert bereits";
            }


            ###### Login #######
            $user_id=get_user_id("foo");

            ###### Usersuche #######
            $result=find_user("foo");

            ###### Passwort zuschicken #######
            $user_id=find_email("foo@example.com");


            // usw... 
            alle geben die ID des Users zurück, oder false wenn er nicht existiert.

            Kommentar


            • #7
              für dich wäre OOP ein wahrer segen!
              [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


              • #8
                wenn alle deine funktionen die user_id zurückgeben dann liegts an Dir

                Kommentar


                • #9
                  Zitat von brian johnson Beitrag anzeigen
                  für dich wäre OOP ein wahrer segen!
                  jop, hilft mir aber auch nicht weiter(außerdem war ich grad zu faul jez für das Beispiel extra eine Klasse zu schreiben). Oder kann man in Klassen aliase erstellen? Das würde mir auch reichen.

                  Bei einem Fehler(und verwendung des aliases) wird als erstes in der Fehlermeldung nicht angezeigt wo die Funktion aufgerufen wurde sondern die Datei in der dich die Klasse befindet. Relativ sinnlos, da ich hoffe dass die Funktionen deswegen Fehler machen weil die Parameter falsch sind.

                  Kommentar


                  • #10
                    Zitat von Salkin Beitrag anzeigen
                    Bei einem Fehler(und verwendung des aliases) wird als erstes in der Fehlermeldung nicht angezeigt wo die Funktion aufgerufen wurde sondern die Datei in der dich die Klasse befindet. Relativ sinnlos, da ich hoffe dass die Funktionen deswegen Fehler machen weil die Parameter falsch sind.


                    ich glaube du solltest dir nocheinmal große gedanken über software design machen.

                    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....
                    [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


                    • #11
                      Kapier ich nicht. Wozu soll das gut sein? Dein Beispiel zeigt mir jetzt keinen Zusammenhang.
                      [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


                      • #12
                        Irgendwie hört sich das ein wenig nach falsch verstandener Polymorphie an. Ich verschiebe das mal lieber.

                        Themenmoderation:
                        [→] Verschoben von PHP-Fortgeschrittene
                        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


                        • #13
                          Mit runkit kannst Du immerhin eine Kopie erstellen.
                          Siehe PHP: runkit_function_copy - Manual
                          Dazu musst das Modul aber installiert sein...

                          Kommentar


                          • #14
                            Mir will sich der Sinn nicht erschließen. Es handelt sich um verschiedene Funktionen, die unterschiedliche Sachen machen, aber denselben Rückgabewert haben. Wo liegt das Problem, wenn eine Funktion von der anderen Gebrauch macht? Weshalb muss es sich um einen Alias handeln?
                            Ein Alias hat nicht nur denselben Rückgabewert sondern tut auch genau dasselbe und zwar auf dieselbe Art und Weise und ist somit zu nichts anderen nützlich, als zu Kompatibilität. Dies kann ich aus dem obigen Skript aber nicht entnehmen. Für mich sieht das aus, wie verschiedene Funktionen mit dem gleichen Rückgabewert.
                            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


                            • #15
                              Nene Manko, so wie ich Salkin verstehe, ist das jedesmal die selbe Funktion(alität). Es macht also haargenau das selbe....(auch wen sein Beispiel an einigen Stellen was anderes nahelegt...)

                              Er will es jetzt Entwicklern so "einfach" wie möglich machen. Ich möchte einen User finden - also suche ich nach einer Funktion die find_user() o.ä. heißt. Ich möchte prüfen ob es einen User gibt? Ich suche nach user_exists()....

                              Das "Problem" löst man aber nicht mit Aliasen sondern mit einer guten Dokumentation...
                              [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                              Kommentar

                              Lädt...
                              X