Dans cette classe, les informations de connexions à la base de donnée sont passés par des constantes que l'on considère défini au préalable.
Voici la classe en elle même :
<?php
class DB
{
private static $instance = NULL;
public static function getInstance() {
if (!self::$instance) {
self::$instance = new PDO("mysql:host=".DB_HOST.";dbname=".DB_DATABASE, DB_USERNAME, DB_PASSWORD);
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}
private function __clone() {
/* interdiction de cloner l'instance */
}
}
?>
class DB
{
private static $instance = NULL;
public static function getInstance() {
if (!self::$instance) {
self::$instance = new PDO("mysql:host=".DB_HOST.";dbname=".DB_DATABASE, DB_USERNAME, DB_PASSWORD);
self::$instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}
private function __clone() {
/* interdiction de cloner l'instance */
}
}
?>
Exemple d'utilisation :
<?php
define('DB_HOST', 'localhost');
define('DB_DATABASE', 'Basededonnee');
define('DB_USERNAME', 'Utilisateur');
define('DB_PASSWORD', 'Motdepasse');
include('./DB.class.php');
$DB = DB::getInstance();
foreach ($DB->query("SELECT id,nom FROM Users") as $row)
{
echo '<p>'.$row['nom'].'</p>';
}
?>
define('DB_HOST', 'localhost');
define('DB_DATABASE', 'Basededonnee');
define('DB_USERNAME', 'Utilisateur');
define('DB_PASSWORD', 'Motdepasse');
include('./DB.class.php');
$DB = DB::getInstance();
foreach ($DB->query("SELECT id,nom FROM Users") as $row)
{
echo '<p>'.$row['nom'].'</p>';
}
?>
On peux aussi utiliser cette class dans une fonction :
[/code]
Exemple d'utilisation :
<?php
define('DB_HOST', 'localhost');
define('DB_DATABASE', 'Basededonnee');
define('DB_USERNAME', 'Utilisateur');
define('DB_PASSWORD', 'Motdepasse');
include('./DB.class.php');
function getUsers()
{
$DB = DB::getInstance();
foreach ($DB->query("SELECT id,nom FROM Users") as $row)
{
echo '<p>'.$row['nom'].'</p>';
}
}
?>
define('DB_HOST', 'localhost');
define('DB_DATABASE', 'Basededonnee');
define('DB_USERNAME', 'Utilisateur');
define('DB_PASSWORD', 'Motdepasse');
include('./DB.class.php');
function getUsers()
{
$DB = DB::getInstance();
foreach ($DB->query("SELECT id,nom FROM Users") as $row)
{
echo '<p>'.$row['nom'].'</p>';
}
}
?>
Ou encore faire les deux.
Dans ce cas de figure, une seul connexion à MySQL est effectué.
<?php
define('DB_HOST', 'localhost');
define('DB_DATABASE', 'Basededonnee');
define('DB_USERNAME', 'Utilisateur');
define('DB_PASSWORD', 'Motdepasse');
include('./DB.class.php');
$DB = DB::getInstance();
$DB->exec("INSERT INTO Users SET nom='sky'");
function getUsers()
{
$DB = DB::getInstance();
foreach ($DB->query("SELECT id,nom FROM Users") as $row)
{
echo '<p>'.$row['nom'].'</p>';
}
}
?>
define('DB_HOST', 'localhost');
define('DB_DATABASE', 'Basededonnee');
define('DB_USERNAME', 'Utilisateur');
define('DB_PASSWORD', 'Motdepasse');
include('./DB.class.php');
$DB = DB::getInstance();
$DB->exec("INSERT INTO Users SET nom='sky'");
function getUsers()
{
$DB = DB::getInstance();
foreach ($DB->query("SELECT id,nom FROM Users") as $row)
{
echo '<p>'.$row['nom'].'</p>';
}
}
?>
Aucun commentaire:
Enregistrer un commentaire