1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class SPDO extends PDO // Signleton PDO
{
// Instance partagée par le singleton
private static $instance = false;
// Envoie l'instance partagée depuis n'importe où dans le code
public static function getInstance()
{
if(!self::$instance)
throw new Exception("PDO instance not initialized");// on oblige une connexion explicite dans le code de l'application.
else
return self::$instance; // on retourne le handle de la connexion
}
/* CONNECTION A LA BASE DE DONNEES
$dsn => nom et host de la bdd, a définir comme suit : 'mysql:dbname='.BDD_NAME.';host='.BDD_CONNECT.''
$username => nom d'utilisateur de la BDD
$password => password de la bdd
$driver_options => tableau de parametres
*/
public static function connect($dsn, $username = "root", $password = "", array $driver_options = NULL)
{
self::$instance = new MyPDO($dsn, $username, $password, $driver_options);
self::$instance->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); // mode exception
self::$instance->setAttribute( PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true ); // use buffer (autorise plusieurs requetes en même temps)
self::$instance->setAttribute( PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC ); //sauf avis contraire, on fait un FETCH_MODE pour avoir uniqumeent un tableau associatif clef => vlaur
return self::$instance;
}
} |