class in class benutzen

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

  • class in class benutzen

    hy...

    ich hab folgenes Problem !!!

    ich hab mir 2 klassen geschrieben die klasse(a) ruft klasse(b) in function 1 von klasse (a) auf...und setzt das objekt auf eine oeffentlich variable in klasse(a)...

    der witz das scheint zu gehen aber versuche ich nun eine function oder variable in klasse(b) auf zu rufen klappt es nicht !!!

    PHP-Code:

    // leider geht diese variante nicht !!!

    $this->var->func();

    $this->var->var
    kann mir da jemand weiter helfen ???

    thx Jointy

  • #2
    wenn eine Instanz der Klasse B in einer Methode von Klasse A erzeugt wird, dann kannst du diese Instanz auch nur in der Methode (Methode = Funktion) nutzen.

    Willst Du sie auch ausserhalb der Methode benutzen, musst du ein Objekt der Klasse B als Instanzvariable von Klasse A haben.

    kleines Beispiel?
    PHP-Code:
    class {

       function 
    f1() {
          
    $var "irgendwas";
          
    $cl = new B();
          
    $cl->setVar($var);
      }

       function 
    tralala() {
          echo 
    $cl->var;    // GEHT NICHT
       
    }
    }

    class 
    {
      var 
    $var;
    }



    ABER
    class 
    {
       var 
    $cl = new B();

       function 
    f1() {
          
    $this->cl->setVar($var);
      }

       function 
    tralala() {
          echo 
    $this->cl->var;    // SOLLTE GEHEN
       
    }
    }

    class 
    {
      var 
    $var "class B var";

    Kommentar


    • #3
      hy...

      ebend das geht nicht....genau so hab ich es benutzt !!!

      cya

      PHP-Code:

      // File: index.php


      include("./includes/config.php");
      require(
      "./includes/dbum_class.php");
      require(
      "./includes/db/".$sql_layer.".php");

      $dbum = new dbum$sql_layer $usetbl $debug );


      // Hier wird jetzt die 2 Class initalisiert
      if( !$dbum->dbum_connect$addr $user $pass $usedb $options ) )
      {
         die();  
      // bla bla bla
      }

      und so weiter 

      PHP-Code:

      // File: dbum_class.php

      class
      {
         var 
      $db;
         var 
      $sql_layer;
         var 
      $use_tbl;
         var 
      $debug;
         function 
      dbum$sql_layer $usetbl $debug FALSE )
         {
            
      $this->sql_layer $sql_layer;
            
      $this->use_tbl $usetbl;
            $
      4this->debug $debug;
         }

         function 
      dbum_connect($addr,$user,pass,$usedb,$options = array() )
         {
            
      // Dieser Schritt klappt noch !!!
            
      $this->db = new sql_db($addr,$user,$pass,$usedb,$options);
            
            
      // Und hier kommt obwohl die Verbindung steht immer FALSE raus....das heisst er greift nicht auf die var zu... warum ???
            
      if( !$this->db->db_connect_id )
            {
                  
      print_r($this->db->sql_error());
                  return 
      FALSE;
            }
            return 
      TRUE;

      Zuletzt geändert von Jointy; 02.07.2003, 02:49.

      Kommentar


      • #4
        hab gerade gemerkt, dass du die Instanz scheinbar nicht ausserhalb der Funktion erzeugen kannst, also :
        PHP-Code:
        class {
           var 
        $cl;

           function 
        A() {
               
        $this->cl = new B();
            }

           function 
        f1() {
              
        $this->cl->setVar($var);
          }

           function 
        tralala() {
              echo 
        $this->cl->var;
           }
        }

        class 
        {
          var 
        $var "class B var";
          
          function 
        setVar($var) {
             
        $this->var $var;
          }

        mit Konstruktor geht's. Find ich aber komisch. Naja .. ka warum das so ist, in andern Sprachen kann man das auch ausserhalb des Konstruktors machen.

        EDIT:
        sooo, nochmal schön gemacht.
        Zuletzt geändert von graf; 02.07.2003, 02:55.

        Kommentar


        • #5
          jetzt wär' schon zu wissen, was in der Klasse "sql_db" steht.

          was ist denn db_connect_id?

          muss ja eine Instanzvariable der Klasse sein!

          Kommentar


          • #6
            ich würde was in der art erwarten ...
            PHP-Code:

            function .....() {
                
            $this->db = new sql_db(....);
                
            $connect_id this->db->connect();
                if (!
            $connect_id) {
                 .....
                }

            Kommentar


            • #7
              hy...

              hat sich erledigt....

              es lag einer simple übergabe eines ""...weil ich alle optionen auf false gesetz hab...

              jetzt funzt auch alles wunderbar...

              besten dank nochmal für deine Hilfe...

              PS: die sql_files sind aus dem PHPBB2 Board zufinden unter ./db/

              kannst dir ja mal anschauen is ne geile sache...um die eingenen scripte gleich für mehrere Datenbank Systeme verfügbar zumachen...

              ist auch alles GNU Public !!!

              die mysql.php hab ich noch einwenig modifiziert...und da lag auch der Fehler...
              sie unterstützt jetzt auch die zusätzlich option für mysql....

              cya Jointy

              Kommentar

              Lädt...
              X