Ik heb een database klasse gemaakt waarmee op basis van config variabelen een database connectie wordt gemaakt met het juiste database type.

De database klasse heeft een connect functie die kijkt in een config variabele welk type database er wordt gebruikt. Vervolgens wordt er op basis hiervan een object aangemaakt van het juiste database-type-klasse bijvoorbeeld de klasse mysql.

Het probleem is dat dit niet lijkt te werken, als ik de volgende code uitvoer:
include_once('database/class.database.php');
$database = new database();
$database->connect();

Dan krijg ik een parse error als ik een mysql_query probeer uit te voeren. Als ik echter direct de mysql klasse aanroep (dus hetzelfde doe wat normaal in die connect functie gebeurd), waar in de constructor de connectie met de database wordt gemaakt, dan werkt het opeens wel...

Het lijkt er dus op dat het aanmaken van een object binnen een klasse niet goed werkt. Kan iemand me hier iets meer over vertellen?

JE moet iets met exstends gebruiken voor een sub class
Ik wil het niet als subclass gebruiken, maar gewoon een object van een andere klasse in die klasse aanmaken...
zo zou ik het doen.... (wel iets andere benamingen dit is mijn db class namelijk :))

db.php

<?php
class db_base {
public $persistency =0;

function db_base($host, $usr, $pass, $db) {
$this->host = $host;
$this->usr = $usr;
$this->pass = $pass;
$this->dbname = $db;
}

//Use persistent connections?
function persistency(){
$this->persistency = 1;
}
}

$file = join("", array("db_", $CONFIG['db'], ".php"));
require($file);

?>

db_mysql.php

<?php
class db extends db_base {

function connect(){
if($this->persistency){
$this->db_connect_id = @mysql_pconnect($this->host, $this->usr, $this->pass);
}else{
$this->db_connect_id = @mysql_connect($this->host, $this->usr, $this->pass);
}
@mysql_select_db($this->dbname, $this->db_connect_id);
return($this->db_connect_id);
}

function query($query){
$this->result = @mysql_query($query);
return($this->result);
}
}
?>

en zo roep je alles aan

include_once (ROOTPATH.'config.inc'.EXT);
include_once (ROOTPATH.'lib/db'.EXT);

$db = new db($CONFIG['db_host'], $CONFIG['db_user'], $CONFIG['db_pass'], $CONFIG['db_db']);
$conn = $db->connect();

Reageren