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?
Kan het niet aan de scope liggen van de connectie die in de mysql klasse wordt aangeroepen. Als er in de database klasse een object van mysql wordt aangemaakt en vervolgens ergens anders een object van database klasse, dat die connectie daar niet meer geldig is of zo?
Allereerst de code uit de pagina waarin de database connectie moet worden gemaakt:
include_once('database/class.database.php');
$database = new database();
$database->connect();
Vervolgens de database klasse:
class database
{
function connect()
{
include_once('configuration/class.configuration.php');
$configuration = new configuration('database');
switch($configuration->configuration[type])
{
case "mysql": include_once('database/class.mysql.php');
$mysql = new mysql($configuration->$configuration[host],
$configuration->$configuration[database],
$configuration->$configuration[user],
$configuration->$configuration[password]);
break;
}
}
}
En tenslotte de mysql klasse:
class mysql
{
private $host;
private $database;
private $user;
private $password;
Weet PHP wel ^^
En zoals je mss weet wordt de functie die dezelfde naam heeft als de class gelijk uitgevoerd :P
<?php
class display
{
function display( $text )
{
echo $text;
}
}
$disp = new display( 'Hoi!' );
?>