Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Argument immer als Variable?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Argument immer als Variable?

    Hallo,

    ich arbeite mich gerade durch den Quellcode eines Loginsystems. Der Autor packt darin sehr häufig Argumente in Variablen, bevor er sie einer Funktion übergibt. Beispiel:

    Code:
    $field = "pass";
    $form->setError($field, "* Invalid password");
    Hat die folgende Variante irgendwelche Nachteile gegenüber der vorherigen?

    Code:
    $form->setError("pass", "* Invalid password");

  • #2
    Wenn das alles ist? Nein...

    Kommentar


    • #3
      Zitat von erc Beitrag anzeigen
      Wenn das alles ist
      ...Um dabei sicher zu gehen, können viele Editoren/IDEs nach den Vorkommen einer Variablen suchen. Bei mehr als einem Vorkommen solltest du schon aufpassen. (Eventuell ist zusätzliche Vorsicht angebracht wenn die Datei includet wird.)

      Kommentar


      • #4
        PHP-Code:
        $form->setError($field"* Invalid password"); 
        Falls die Methodensignatur für den ersten Parameter eine Referenz vorgibt, gibt es keinen anderen Weg.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Danke für die schnellen Antworten

          @Tropi: Deine Antwort verstehe ich nicht. Wobei gehen Editoren oder IDEs sicher, wenn sie nach den Vorkommen einer Variablen suchen und wieso sollte ich aufpassen, wenn eine Variable mehr als einmal vorkommt?

          @lstegelitz: Werden Referenzen in PHP dadurch gekennzeichnet, dass sie mit einem Kaufmanns-Und beginnen? In dem Fall hätte der Autor die Variable also weglassen können, weil er keine Referenzen zu verwenden scheint?

          Kommentar


          • #6
            Dein Beispiel war:
            PHP-Code:
            $field "pass";
            $form->setError($field"* Invalid password"); 
            Der Code könnte als Ganzes aber auch so ausgesehen haben:
            PHP-Code:
            $field "pass";
            $form->setError($field"* Invalid password");
            ...
            ...
            $form->makeLabel($field);
            ...
            beliebigeFunktion($field); 
            Wenn du jetzt das erste Vorkommen bei setError() durch den Wert "pass" ersetzt, werden die restlichen Funktionsaufrufe Fehler werfen (weil $field undefiniert ist). Daher zuerst im Editor nach (der Anzahl von) Vorkommnissen von $field suchen, damit du sicher gehst das diese Variable nicht wo anders doch noch gebraucht wird. Deswegen auch nochmal die Betonung auf "wenn das alles ist".

            Ja, Referenzen als Parameter haben ein & davor. Eigentlich steht aber alles Wissenswerte dazu schon im Handbuch beschrieben: http://php.net/manual/de/language.references.pass.php

            Kommentar


            • #7
              Danke Tropi. Jetzt habe ich es verstanden, aber auch das kann ich verneinen. Er benutzt den Wert der Variablen immer nur ein einziges Mal. Das mit den Referenzen hatte ich bereits nachgesehen. Aus Unsicherheit musste ich trotzdem nochmal nachfragen. Trotzdem danke für den Link zum Handbuch.

              Kommentar


              • #8
                Dann bringt es keine besonderen Vorteile. Maximal die Lesbarkeit wird in einigen Fällen verbessert. Vergleiche z.B. die Funktion [MAN]imagettftext[/MAN]:
                Code:
                imagettftext ( resource $im , int $size , int $angle , int $x , int $y , int $col , string $fontfile , string $text )
                Der Aufruf:
                PHP-Code:
                imagettftext ($imageRessource$fontSize$angle$x$y$color$font$text
                ist wohl um einiges aussagekräftiger als:
                PHP-Code:
                imagettftext ($imageRessource10101010$color$font$text
                Wenn du jetzt die Schriftgröße ändern wollen würdest, müsstest du:
                - bei 1.: Einfach $size verändern
                - bei 2.: Ganz sicher im Handbuch nachschauen damit du weißt welche "10" denn für die Schriftgröße steht.

                Aber technisch bringt es keinerlei Vorteile Variablen vor einem Funktionsaufruf zu initialisieren.

                Kommentar

                Lädt...
                X