Ankündigung

Einklappen
Keine Ankündigung bisher.

Parameterübergabe

Einklappen

Neue Werbung 2019

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

  • #16
    Zitat von phpdummi Beitrag anzeigen
    Was haltet ihr davon noch auf die Vorteile von einer Array- bzw. Objekt-Übergabe einzugehen?
    Lesbarkeit und Verständnis des Codes werden ja durch Konstrukte wie
    PHP-Code:
    <?php
    myFunc
    (array("color"=>"green","some"=>"thing"))
    erhöht.
    Wenn man nach ein paar Monaten noch mal was ändern möchte oder fremden Code bekommt,
    muss man nicht ständig in der Dokumentation suchen.
    Im prinzip nicht schlecht weil man so auch in PHP leichter überladen kann
    Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

    Kommentar


    • #17
      Im prinzip nicht schlecht weil man so auch in PHP leichter überladen kann
      was dann aber eher in einen gleichnamigen artikel gehörte.

      Wenn man nach ein paar Monaten noch mal was ändern möchte oder fremden Code bekommt,
      muss man nicht ständig in der Dokumentation suchen.
      Gerade doch, oder? Am Funktionsparameter erkennt man die Schnittstelle ja nicht mehr. In Objekt-Init Methoden benutze ich das auch öfter, aber generell ist das ein zweischneidiger Tipp.
      [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


      • #18
        Zitat von nikosch Beitrag anzeigen
        In Objekt-Init Methoden benutze ich das auch öfter, aber generell ist das ein zweischneidiger Tipp.
        leider hat vor- und nachteile
        Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

        Kommentar


        • #19
          Gerade durch die assoziativen Arrays erkenne ich doch jeden Parameter der übergeben wird.
          Wieso erkennt man dann die Schnittstelle nicht mehr?
          [FONT="Book Antiqua"][I]"Nobody is as smart as everybody" - Kevin Kelly[/I]
          — The best things in life aren't things[/FONT]

          Kommentar


          • #20
            Gerade durch die assoziativen Arrays erkenne ich doch jeden Parameter der übergeben wird.
            Ja, an der Stelle des Aufrufs. Und nur bei vollständiger Initialisierung. Verwendest Du nur eine Teilmenge der möglichken Parameterschlüssel (=Überladen), dann sind Dir auch nur diese Parameter bekannt.

            vgl.
            PHP-Code:
            function listFolder ($sFolder $aExtension = array () , $bSubFolders true $bKeyAssoc true)
              {
              }

            ...

            $aStruct listFolder ('./'); 
            vs.
            PHP-Code:
            function listFolder ($aSettings)
              {
              }

            ...

            $aStruct listFolder (array (
                                         
            'folder' => './'
                                         
            )); 
            [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


            • #21
              Ok nun hab ich auch kapiert =)
              [FONT="Book Antiqua"][I]"Nobody is as smart as everybody" - Kevin Kelly[/I]
              — The best things in life aren't things[/FONT]

              Kommentar


              • #22
                Bei guter Dokumenatation ist die Diskussion auch eher akademisch. Aber letztendlich ists das selbe Argument, das auch immer bei getter/setter Methoden angeführt wird.
                [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


                • #23
                  Ich hoffe ja darauf das überladen in PHP6 endlich ohne __call mögich ist ... ein wichtiger Schritt dahin sind ja schon mal die TypeHints im Prinzip wäre ich auch dafür wenn es endlich feste Datentypen geben würde und man diese erst inizieren muss wie in C/C++

                  also praktich:

                  PHP-Code:
                  integer $i;
                  float $f 1.5;

                  class 
                  Foo {
                     public function 
                  bar(integer $i)
                     {
                        echo 
                  "method bar with int param";
                     }
                     
                     public function 
                  bar(float $f)
                     {
                         echo 
                  "method bar with float param";
                     }

                  geht derzeit ja leider nur per __call
                  Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                  Kommentar


                  • #24
                    Nur um Missverständnissen vorzubeugen: Typehinting ist mit primitiven Datentypen nicht möglich.
                    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


                    • #25
                      Man müsste eben in dem Artikel auf die Vor- und Nachteile eingehen und aufzeigen wo es besonders sinnvoll ist.

                      Parameter die zwingend notwendig sind und nicht durch einen "sensible default" ersetzt werden können: normaler Parameter.
                      Für Nikoschs listFolder-Beispiel also zum Beispiel:
                      PHP-Code:
                      function listFolder($folder$options = array())
                      {
                          
                      $default_options = array(
                              
                      'extensions' => array('*'),
                              
                      'recursive' => true
                          
                      );
                          
                      $options array_merge($default_options$options);
                          
                      //do stuff
                      }
                        
                      listFolder('./', array('recursive' => false)); 
                      Ich zieh jedenalls sowas im allgemeinen einer ellenlangen Parameterliste mit optionalen Parametern vor. Die Optionen müssen natürlich schön dokumentiert sein...
                      [URL="https://www.quizshow.io/"]Create your own quiz show.[/URL]

                      Kommentar


                      • #26
                        Ich benutze für sowas im allgemeinen binäre Flags, wie die PHP System-Funktionen.
                        [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


                        • #27
                          Wenn mit Strings verschiedene Settings angesprochen werden und sich dieses Schema in mehreren Methoden wiederholt, kann man auch entsprechende Klassenkonstanten definieren, um Tippfehler zu vermeiden.
                          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


                          • #28
                            So sähe das bei mir aus:
                            PHP-Code:
                            define ('FOLDER_LIST_SUBFOLDERS' 1);
                            define ('FOLDER_LIST_ASSOC' 2);

                            function 
                            listFolder ($sFolder $aExtension = array () , $iFlags 0)
                              {
                              }

                            ..
                            $aStruct listFolder ('./' null FOLDER_LIST_ASSOC); 
                            [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


                            • #29
                              Und so bei mir mit Klasse:
                              PHP-Code:
                              Class Folder
                              {
                                  const 
                              LIST_SUBFOLDERS 1;
                                  const 
                              LIST_ASSOC      2;
                                  
                                  public function 
                              listFolder($sFolder$aExtension = array(), $iFlags 0)
                                  {
                                  }
                              }
                              ...
                              $folder = new Folder('.');
                              $struct $folder->listFolder('./' null Folder::LIST_ASSOC); 
                              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


                              • #30
                                In so'nem Fall selbstredend. Aber, Mist, ich benutze viel zu selten Klassenkonstanten.
                                [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

                                Lädt...
                                X