Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Objekt als Array in Klasse nutzen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Objekt als Array in Klasse nutzen

    Hallo,

    nach sehr langer PHP Pause sitze ich nun auch mal wieder vor dem PC, geht auch direkt mit den einfachsten Problemen los

    Unzwar würde ich gerne den Daten aus einer DB in eine Klasse schreiben. Es sind so um die 20 Datensätze also müsste ich diese auch in 20 Objekten aufsammeln. Wie erzeuge ich nun innerhalb einer klasse ein Objekt Array?

    In C# würde man mit
    For(int i=0;i<10;i++)
    {
    $arr[$i] = new OBJECKT();
    }
    das gewünschte erzeugen und könnte auch so damit arbeiten.
    In PHP allerdings muss ich ja auf den $this Opterator in Klassen zugreifen. Wie funktioniert das dann?


  • #2
    Bei PDO kannst du ja den standard Fetchmode so angeben, dass immer Objekte zurückgeliefert werden

    PHP-Code:
    $PDO->setAttributePDO::ATTR_DEFAULT_FETCH_MODEPDO::FETCH_OBJ ); 
    Dann brauchst du dir die Daten nurnoch mit fetchAll() holen

    http://www.php.net/manual/de/pdostatement.fetchall.php

    und hast ein Array von Objekten
    You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.

    Kommentar


    • #3
      PHP-Code:
      class blub {
          private 
      $arr;

          function ... {
             
              for() {
                  
      $this->arr[] = ...;
              }

          }


      Kommentar


      • #4
        Ich arbeite mit pgSQL, hätte ich erwähnen sollen, bei PDO (ist für mich neu) habe ich das Problem das wenn ich ein DB Objekt erzeuge und das an eine Klasse weitergebe, nicht über $this->db->query(); was ausführen kann. Weiß nicht wo da der Fehler lag.

        Kommentar


        • #5
          Zitat von Nagazi Beitrag anzeigen
          Unzwar würde ich gerne den Daten aus einer DB in eine Klasse schreiben.
          Du willst etwas in eine Klassen-Instanz schreiben, nicht in eine Klasse.

          Zitat von Nagazi Beitrag anzeigen
          Es sind so um die 20 Datensätze also müsste ich diese auch in 20 Objekten aufsammeln. Wie erzeuge ich nun innerhalb einer klasse ein Objekt Array?
          Dafür benötigst du eine Klasse von der du Objekte erzeugen kannst. Diese Klasse muss entweder das setzen von Eigenschaften unterstützen ( entweder via getter / setter oder via Constructor ) oder du kannst auch ein DTO bauen, das keine Setter oder einen Constructor hat und es via Closure-Binding befüllen, allerdings verstößt letzteres im moment noch gegen das gegenwärtige OOP-Verständnis.

          Ein Array ist ein Array, ob das nun Objekte, Zahlen, Buchstaben oder NULL enthält ist dem Array egal.
          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

          Kommentar


          • #6
            In C# würde man mit
            For(int i=0;i<10;i++)
            {
            $arr[$i] = new OBJECKT();
            }
            das gewünschte erzeugen und könnte auch so damit arbeiten.
            Und in PHP ganz genauso.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              Habe das jetzt wie folgt:
              PHP-Code:
              class bla 
                  private var;
                      function 
              foo() { 
                          ....
                          for() { 
                              
              $this->var[$i] = new var(werte);
                          } 
                      }  

              So funktionierts nun auch hatte $arr mit new var(); initialisiert anstatt sie als reines Array zu nutzen. Danke für die Hilfe

              Kommentar


              • #8
                Weil es kein Array ist.

                PHP-Code:
                class Bla {  
                    private 
                $var = []; 
                    
                    function 
                foo() {  
                        for([
                1234] as $val) {  
                            
                $this->var[] = new SomeClass($val); 
                        }  
                    }   

                [] geht als Arraynotation erst am PHP 5.4. Davor musste man array() benutzen.
                Standards - Best Practices - AwesomePHP - Guideline für WebApps

                Kommentar


                • #9
                  Kann eigendlich nicht sein, habe PHP Version 5.3.17 und es funktioniert ja jetzt so wie ich es hier gepostet habe

                  Kommentar


                  • #10
                    Dein "edit" kam zu spät.
                    Standards - Best Practices - AwesomePHP - Guideline für WebApps

                    Kommentar


                    • #11
                      Ah okay

                      Kommentar

                      Lädt...
                      X