Je tourne en rond depuis 1h et je n'arrive pas à trouver ce que j'écris mal dans mes classes...
J'ai que 4 fichiers tout bête j'essaye de créer une classe engine et une classe database l'objectif étant d'écrire un code le plus clair possible !
Mon index.php est pourtant simple
<?php
include("engine/engine.php");
$pEngine = new engine();
$pEngine->getDatabase();
$sSql = "SELECT * FROM t_sld";
$pRet = mysql_query($sSql);
$aRow = mysql_fetch_array($pRet);
$pEngine->end();
?>
database.php
<?php
/****
*** Class database
*****/
// Global variable definition
$g_isConnected = FALSE;
class database
{
var $pLink = null;
public function __construct()
{
if ( ! $this->isConnect() )
{
$this->connect();
echo "database connexion ok!";
}
$this->getDatabase();
}
public function connect()
{
echo "connecting to database host";
$this->pLink = mysql_connect(DATABASE_HOSTNAME, DATABASE_USERNAME, DATABASE_PASSWORD )
|| die("Impossible de se connecter : " . mysql_error());
global $g_isConnected;
$g_isConnected = TRUE;
echo "Connexion success my pLink = " . $this->plink."<br>";
}
public function isConnect()
{
global $g_isConnected;
return $g_isConnected;
}
public function getDatabase()
{
mysql_select_db(DATABASE_NAME) || die("Impossible de se connecter : " . mysql_error());
echo "database selected : ". DATABASE_NAME;
}
public function getDatabaseName()
{
return DATABASE_NAME;
}
public function __destruct()
{
print " Database destruction call my pLink = " . $this->plink;
if( $this->isConnect() )
{
mysql_close( $this->plink );
global $g_isConnected;
$g_isConnected = FALSE;
}
echo "Database destruction in progress";
unset($this);
echo "Database destruction is ok";
}
}
?>
engine.php
<?php
/****
*** Class engine
*****/
require("engine/database.php");
require("engine/engine.conf.inc");
class engine
{
public $pDatabase;
public function __construct()
{
}
// This version number is flag when CVS build is make
public function getVersion()
{
return "1.0-0";
}
public function getDatabase()
{
if ( ! $this->pDatabase )
{
$this->pDatabase = new database();
}
return $this->pDatabase;
}
public function __destruct()
{
echo "I'm trying to destruct my database connexion handler";
$this->pDatabase->__destruct();
echo "Engine destruction in progress";
unset($this);
echo "Engine destruction is ok";
}
public function end()
{
echo "Engine destruction called";
$this->__destruct();
}
}
?>
Le fichier engine.conf.inc contenant vous l'avez compris les constantes permetant la connexion...Ma sortie écran est la suivante ... :
Code : Tout sélectionner
connecting to database hostConnexion success my pLink =
database connexion ok!database selected :xxxxxx
Engine destruction calledI'm trying to destruct my database connexion handler Database destruction call my pLink =
[b]Warning[/b]: mysql_close(): supplied argument is not a valid MySQL-Link resource in [b]/xxxxxxxx/engine/database.php[/b] on line 60
Database destruction in progressDatabase destruction is okEngine destruction in progressEngine destruction is okI'm trying to destruct my database connexion handler Database destruction call my pLink = Database destruction in progressDatabase destruction is okEngine destruction in progressEngine destruction is ok Database destruction call my pLink = Database destruction in progressDatabase destruction is okJe vois pas trop pkoi... la réalité est que je viens du monde perl et que j'ai un peu de mal à me rappeler du PhP ^^ mais j'ai l'impression d'avoir tout bon pourquoi mon objet database est détruit avant même que j'essaye de le détruire ? J'ai supprimé l'héritage de database dans engine et rendu une variable global pensant que... mais je ne comprend pas trop le souci si vous aviez un coup de pouce ca m'aiderai bcp merci