Klassen Newbie braucht hilfe

Darian

Erfahrenes Mitglied
Hallo Leute,

ich war zwar schon immer ein Benutzer, aber nie ein Selbstcoder von Klassen.

Ich benutze AdoDB, und mir ist aufgefallen das mit Execute und auch mit Close Probleme gibt. Sobald ich aber das Execute in den constructor gebe, geht es. Irgendwie können die anderen Methoden keine AdoDB Methoden benutzen.

Was mache ich falsch

Folgende Fehlermeldung:
Fatal error: Call to a member function Execute() on a non-object in */databasemanager.class.php on line 57

Die Klasse selbst:
PHP:
require_once(CLASS_PATH . "/adodb/adodb.inc.php");

class Databasemanager {
	
	private $db_connection = NULL;
	
	public function __construct() {
		
		$db_connection = NewADOConnection(DB_TYPE);
		
		$db_connection->debug = ADODB_DEBUG;
		
		$db_connection->Connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
		
	}
	
	public function select($sql) {
		
		return $db_connection->Execute($sql);
		
	}
	
	public function __destruct() {
		
		$db_connection->Close();
	}
	
	public function GetTableFields($object) {
		
		Fields($colname);
		
		//weiß ich noch nicht, müßte ich aber als nächstes Testen
	}

}

Benutzen der Klasse:
PHP:
$connection = new Databasemanager();

$recordset = $connection->select("SELECT * FROM guestbook");

echo $recordset;

Wäre super wenn ich da ein paar Infos kriege, aller Klassenanfang ist schwer ;-)

lg Darian
 
Wenn du auf Klassenvariablen in der Klasse zugreifen willst, musst du "$this->" voranstellen.

PHP:
require_once(CLASS_PATH . "/adodb/adodb.inc.php");

class Databasemanager {
    
    private $db_connection = NULL;
    
    public function __construct() {
        
        $this->db_connection = NewADOConnection(DB_TYPE);
        
        $this->db_connection->debug = ADODB_DEBUG;
        
        $this->db_connection->Connect(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
        
    }
    
    public function select($sql) {
        
        return $this->db_connection->Execute($sql);
        
    }
    
    public function __destruct() {
        
        $this->db_connection->Close();
    }
    
    public function GetTableFields($object) {
        
        Fields($colname);
        
        //weiß ich noch nicht, müßte ich aber als nächstes Testen
    }

}

Ansonsten wäre $db_connection nur eine normale Variable in der entsprechenden Funktion/Methode und nicht inder gesamten Klasse nutzbar.

Deine Fehlermeldung sagt, das execute() nicht existiert, da $db_connection nur eine Variable war und kein Objekt (AdoDB) das diese Methode besitzt..

Hoffe das reicht als erklärung.

Gruss
 
Hallo,

na das war ja wirklich zu bloed von mir, habe vor lauter phpdocumentor Kommentare checken, und AdoDB Sachen ansehen auf das wesentliche vergessen.

Danke dir, und sorry fuer diesen komischen Beitrag. Ich bin sicher das werde ich jetzt nie wieder vergessen.

lg und danke
Darian
 
Zurück