Alors là vous me direz , pourquoi faire une classe de configuration ? Je vous répondrais que ça me parait plus souple et mieux . Je préviens aussi que mon code est peut être mal fait , merci de me dire ce qui ne pas aussi
Donc je vais vous expliquer ce qui ne va pas :
J'ai mon index.php
Code PHP :
<?php
require("/includes/init.php");
$site->GetNews(1 , 5);
?>
$site est initialisé ici (init.php)
Code PHP :
<?php
define('ROOTPATH', 'http://'.$_SERVER['HTTP_HOST'], true);
require("/classes/config.class.php");
require("/classes/sql.class.php");
require("/classes/site.class.php");
$config = config::getInstance();
$site = site::getInstance();
$connexion = sql::getInstance($config->GetMysqlUser() , $config->GetMysqlPass() , $config->GetMysqlPort(), $config->GetMysqlAdress() , $config->GetSiteDBName());
?>
Donc après ma classe de config
Code PHP :
<?php
class config
{
private static $configInstance = NULL;
/* ===== Mysql ===== */
private static $mysqluser = 'root'; //Utilisateur Mysql
private static $mysqlpass = '';//Pass Mysql
private static $mysqladress = 'localhost';//Adresse du serveur mysql
private static $mysqlport = 3306;//Port Mysql
private static $CharactersDB = 'characters';//Nom de votre DB characters
private static $WorldDB = 'world';//Nom de votre DB world
private static $AccountDB = 'realmd';//Nom de votre DB account
private static $SiteDB = 'site';//Nom de votre DB site
private function __construct()
{
}
public static function getInstance()
{
if(is_null(self::$configInstance))
{
self::$configInstance = new config();
}
return self::$configInstance;
}
public static function GetMysqlUser()
{
if(isset(self::$mysqluser))
return self::$mysqluser;
}
public static function GetMysqlPass()
{
if(isset(self::$mysqlpass))
return self::$mysqlpass;
}
public static function GetMysqlAdress()
{
if(isset(self::$mysqladress))
return self::$mysqladress;
}
public static function GetCharactersDBName()
{
if(isset(self::$CharactersDB))
return self::$CharactersDB;
}
public static function GetWorldDBName()
{
if(isset(self::$WorldDB))
return self::$WorldDB;
}
public static function GetAccountDBName()
{
if(isset(self::$AccountDB))
return self::$AccountDB;
}
public static function GetSiteDBName()
{
if(isset(self::$SiteDB))
return self::$SiteDB;
}
public static function GetMysqlPort()
{
if(isset(self::$mysqlport))
return self::$mysqlport;
}
}
?>
Ma classe site
Code PHP :
<?php
class site
{
private static $SiteInstance = NULL;
private function __construct()
{
}
public function getInstance()
{
if(is_null(self::$SiteInstance))
{
self::$SiteInstance = new site();
}
return self::$SiteInstance;
}
public function GetNews($id_min , $id_max)//Fonction pour les news
{
$config = config::getInstance();
$connexion = sql::getInstance($config->GetMysqlUser() , $config->GetMysqlPass() , $config->GetMysqlPort(), $config->GetMysqlAdress() , $config->GetSiteDBName());
$requête_news = $connexion->prepare("SELECT id , auteur , titre , texte FROM news ORDER BY id DESC LIMIT ".$id_min." ,".$id_max."");
$requête_news->execute();
while($new = $requête_news->fetch(PDO::FETCH_OBJ))
{
echo 'id :'.$new['id'].'<br />';
echo 'auteur :'.$new['auteur'].'<br />';
echo 'titre :'.$new['titre'].'<br />';
echo 'Contenu :'.$new['texte'].'<br />';
}
}
public function GetServerStatut($ip , $port)
{
}
}
?>
ma classe sql
Code PHP :
<?php
class sql
{
private static $SqlInstance = null;
private function __construct($mysqluser , $mysqlpass , $mysqlport , $mysqladress , $db)
{
$bdd = NULL;
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host='.$mysqladress.';dbname='.$db,$mysqluser, $mysqlpass , $pdo_options);
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
return $bdd;
}
public static function getInstance($mysqluser , $mysqlpass , $mysqlport , $mysqladress , $db)
{
if(is_null(self::$SqlInstance))
{
self::$SqlInstance = new sql($mysqluser , $mysqlpass , $mysqlport , $mysqladress , $db);
}
return self::$SqlInstance;
}
}
?>
Et donc ce qui ne va pas c'est la ligne
Code PHP :
$requête_news = $connexion->prepare("SELECT id , auteur , titre , texte FROM news ORDER BY id DESC LIMIT ".$id_min." ,".$id_max."");
J'ai l'erreur
méchant php a écrit :( ! ) Fatal error: Call to undefined method sql::prepare() in C:\wamp\www\site\classes\site.class.php on line 22
Call Stack
# Time Memory Function Location
1 0.0005 668368 {main}( ) ..\index.php:0
2 0.0143 731376 site->GetNews( ) ..\index.php:3
Et là je bloque . A mon avis il accède pas a l'objet sql qui est un objet sur le model de la classe PDO (créé dans ma classe sql je le rapel )
Donc que faire ?
Merci