Ankündigung

Einklappen
Keine Ankündigung bisher.

variablen aus klassen weiterverwenden

Einklappen

Neue Werbung 2019

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

  • variablen aus klassen weiterverwenden

    also ich hab z.b. eine mysql-klasse, die in mysql_query ausführt.
    Code:
    function query($sql) {
    
        $this->connect($this->host, $this->db, $this->usr, $this->pw);
    
        $this->_sql = trim($sql);
        $this->_query = mysql_query($this->_sql);
            if(!$this->_query) {
                $this->error();
            }
        $this->_num = mysql_num_rows($this->_query);
        
    }
    das ist die query-funktion.
    jetzt ist meine frage, wie ich die variable $_num weiterverwenden kann, auch wenn sie in der klasse bzw. funktion selbst nicht ausgegeben wurde. ich habs mit verschiedenen funktionen wie z.b. get_object_vars oder get_class_vars versucht, aber als ergebnis immer nur "Array" erhalten.

  • #2
    Ich setzte mal voraus, Deine Klasse heißt »query«. Dann müßtest Du mit
    Code:
    $instance_of_query = new query('SELECT ...');
    echo $instance_of_query -> _num;
    auf die Zahl zugreifen können.

    Oder habe ich Deine Frage falsch verstanden?

    Kommentar


    • #3
      nein hast du nicht.

      genauso geht es ..
      [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

      Kommentar


      • #4
        jo, das klappt wunderbar, aber wenn ich das richtig verstehe, dann klappt das doch nur, wenn die klasse und die "wichtige" funktion (in dem fall die query-funktion) gleich heißen oder?

        aber schonmal danke ans schneiderlein :wink:

        Kommentar


        • #5
          Wenn in Deiner Klasse eine gleichnamige Funktion existiert, wird diese gleich bei Aufruf ausgeführt. Gibt es keine solche, passiert erstmal nichts Verwertbares. Heißt Deine Funktion anders, sieht's z. B. so aus:

          Code:
          <?php
          class query
              {
              function abfrage ($sql)
                  {
                  /* MySQL-Kram, endet mit */
                  $this -> _num = mysql_num_rows($this -> _query);
                  }
              }
          
          $instance_of_query = new query;
          $instance_of_query -> abfrage('SELECT ...'); 
          echo $instance_of_query -> _num;
          ?>
          PS: Wenn Du »$_query« (was ich lieber »$_result« nennen würde) nur in der Funktion, aber nicht außerhalb brauchst, kannst Du »$this->« weglassen.

          Kommentar


          • #6
            ja klappt alles wunderbar, danke schön

            Kommentar


            • #7
              nein.

              es kann in einer klasse funktionen geben, die so heißen, wie die klasse selbst ..
              das sind konstruktoren.

              wenn du eine instanz / ein objekt der klasse anlegst, dann schreibst du ja
              Code:
              $instance_of_class = new Class_name([parameter]);
              der übergabeparameter ist optional.
              was passiert also da?

              du rufst einen konstruktor der klasse auf.
              in deinem fall den konstruktor query( var ) mit einem übergabeparameter.

              das als einführung.
              such mal etwas im internet nach objektorientierter programmierung (OOP) ..

              zu deiner zweiten frage.
              nein.

              es funktioniert immer.

              ein bsp.
              Code:
              <?php
              
              class MySQL
              {
                  // globale Variablen
              
                  var $CONN = "";
                  var $DBASE = "scripte";
                  var $HOST = "localhost";
                  var $PASS = "test";
                  var $USER = "";
                  
                 // Standardkonstruktor
                 function MySQL()
                 {
                     $this->connect();
                 }
              
              
                  // Fehlerausgabe
                  function error($err)
                  {
                      $no = mysql_errno();
                      $msg = mysql_error();
                      echo "[$err] \n $no \n\n $msg 
               \n";
                      exit;
                  }
              
              
                 // Verbindungsaufbau zur Datenbank
                 function connect()
                 {
                     $userID = $this->USER;
                     $pass = $this->PASS;
                     $host = $this->HOST;
                     $dbase = $this->DBASE;
              
                     $conn = mysql_connect($host,$userID,$pass);
                     if (!$conn)
                     {
                         $this->error("Keine Verbindung");
                     }
                     if (!mysql_select_db($dbase,$conn))
                     {
                         $this->error("Keine Datenbank");
                     }
              
                     $this->CONN = $conn;
                     return true;
                  }
                  
              
              	function query($sql)
              	{
              	    // Query ausführen
              	}
              
              }
              ?>
              viel code .. aber spiel mal was rum ..

              in einem script kannst du jetzt ganz einfach so etwas machen ..

              Code:
              <?php
              
              	// Objekt erstellen
              	// Der Konstruktor hat die DB-Verbindug hergestellt
              	$DB = new MySQL();
              	
              	echo $DB->HOST;
              	echo $DB->DBASE;
              	
              	// etc.
              
              ?>
              hoffe wenigstens etwas geholfen zu haben
              [b][url=http://www.benjamin-klaile.de]privater Blog[/url][/b]

              Kommentar

              Lädt...
              X