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

  • Nagazi
    hat ein Thema erstellt [Erledigt] Objekt als Array in Klasse nutzen.

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

  • Nagazi
    antwortet
    Ah okay

    Einen Kommentar schreiben:


  • rkr
    antwortet
    Dein "edit" kam zu spät.

    Einen Kommentar schreiben:


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

    Einen Kommentar schreiben:


  • rkr
    antwortet
    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.

    Einen Kommentar schreiben:


  • Nagazi
    antwortet
    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

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    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.

    Einen Kommentar schreiben:


  • tr0y
    antwortet
    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.

    Einen Kommentar schreiben:


  • Nagazi
    antwortet
    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.

    Einen Kommentar schreiben:


  • erc
    antwortet
    PHP-Code:
    class blub {
        private 
    $arr;

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

        }


    Einen Kommentar schreiben:


  • chorn
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X