Fremdes Objekt in einer Klasse verwenden

Dieses Thema im Forum "Webentwicklung" wurde erstellt von WhiteGloves, 15. November 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 15. November 2007
    Hallo leute,

    ich bin noch Anfänger in OOP und habe da ein Problem.

    Ich habe zwei Klassen, einmal eine SQL Klasse und eine USER Klasse.

    Innerhalb einer Methode der USER Klasse will ich ein SQL Objekt erstellen um halt eine Datenbank abfrage durchzuführen.
    Leider kriege ich das nicht hin, kann mir bitte jemand erklären wie man das macht?

    Das ist meine User Klasse
    PHP:
    class  user  {

     public 
    $id ;
     public 
    $name ;
     public 
    $image
      
      
    // Constructor
    function  __construct ( $userid ) {
     
    $sql  "SELECT * FROM tux WHERE id = '" . $userid . "'" ;
     
    $row  $db -> fetch_row ( $sql );  // Wie mache ich das?
     
     
    $this -> id  $userid ;
     
    $this -> name  $row [ 'name' ];
     
    $this -> image  $row [ 'image' ];
    }
    }
    Und hier meine SQL Klasse (bisschen abgekürzt)

    PHP:
    class  mysqlconnection  {

    function 
    fetch_row ( $sql ) {
      
    $result  $this -> query ( $sql );
      
    $row  mysql_fetch_assoc ( $result );
       return 
    $row ;
    }
    }

    Ich bedanke mich schonmal für eure Hilfe



    MfG
    WhiteGloves
     
  2. 15. November 2007
    AW: Fremdes Objekt in einer Klasse verwenden

    3 Moeglichkeiten
    1. DB-Objekt in der Klasse selbst erzeugen
    2. DB-Objekt dem Konstruktor uebergeben
    3. DB-Objekt global laden
     
  3. 15. November 2007
    AW: Fremdes Objekt in einer Klasse verwenden

    Ich versteh dein Problem nicht so ganz, aber nunja, da empfehle ich dir zum Einen die PHP - Doku und in einer Minute poste ich dir auch eben etwas code.

    PHP:
    <? php
    class  user  {
        

        
    public function  __construct ( $userid mysqlconnection $oDb  null ) {
            if (empty(
    $oDb )) {
                
    $oDb  = new  mysqlconnection ();
            }
            
    $row  $oDb -> fetch_row ( "SELECT `name`, 
                                           `image` 
                                     FROM  `tux` 
                                     WHERE `id` = '
    { $userid } '" );

            
    $this -> id     $userid ;
            
    $this -> name   $row [ 'name' ];
            
    $this -> image  $row [ 'image' ];
        }
    }
    ?>


    Eine Möglichkeit wäre sowas, wohingegen es doch im Endeffekt deine Entscheidung ist wie du mit Variablen und Delegationen umgehst.
     
  4. 15. November 2007
    AW: Fremdes Objekt in einer Klasse verwenden


    Global will ich es nicht, und dem Konstruktor übergeben mag ich eigentlich auch nicht.

    Es in der Klasse zu erzeugen habe ich bereits versucht. Allerdings bekomme ich das nicht hin.

    Könntest du mir das als Beispiel anhand meiner beiden Klassen vlt kurz zeigen?


    Edit//
    Ich würde euch ja Posten wie ich es versucht habe, um euch zu zeigen das ichs wenigstens versucht habe, allerdings hab ich das alles wieder Rückgängig gemacht und will jetzt schlafen gehen^^
     
  5. 16. November 2007
    AW: Fremdes Objekt in einer Klasse verwenden

    1.
    PHP:
    class  user  {
        function 
    user () {
            
    $db  = new  mysqlconnection ();
            
    $rows  $db -> rows ();
        }
    }
    2.
    PHP:
    $db  = new  mysqlconnection ();
    class 
    user  {
        function 
    user (& $db ) {
            
    $row  $db -> rows ();
        }
    }

    $user  = new  user ( $db );
    3.
    PHP:
    $db  = new  mysqlconnecton ();
    class 
    user  {
        function 
    _machwas () {
            global 
    $db ;
            
    $row  $db -> rows ();
        }
    }

    $user  = new  user ();
    eigendlich nix dabei, und oop heisst ja ned das man keine gängigen php methoden verwenden kann
     
  6. 16. November 2007
    AW: Fremdes Objekt in einer Klasse verwenden

    Okay danke ihr zwei, hatte es eigentlich genauso nur das ich die () vergessen hatte.
    Hatte als $db = new mysqlconnection; gemacht, weil das ausserhalb der Klasse auch immer ohne () Funktionierte, und dann hab ich da gestern abend einfach nicht mehr dran gedacht es mal mit Klammern zu versuchen.


    Vielen Dank

    close
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.