Modérateur PHPfrance |
8758 Messages
24 nov. 2011, 10:11
yop,
bon au pif tu fais
connection.php
$pdo = new pdo( truc );
autrepage.php
include 'connection.php';
function machin($var) {
$pdo->query($var);
etc etc
}
?
si oui tu a un problème de portée des variables car ce qui est définis dans en dehors de ta fonction ne l'est pas dedans. Hors mis l'utilisation du mot clef globals (beurk

).
une solution serait la mise en place d'un singleton un peu particulier du style
<?php
<?php
class singletonpdo {
private static $instance;
private function __construct() {}
public static function getinstance($dsn=null,$user=null,$passwd=null,$option=null) {
if (is_null($dsn)){
if (is_null(self::$instance)) {
throw new Exception('Pas d\'instance de la classe PDO faut indiquer dsn, user et mdp à un moment ou un autre ;) ! ');
}
else {
return self::$instance;
}
}
else {
if ( !is_null($user)) {
try {
self::$instance = new PDO($dsn,$user,$passwd,$option);
}
catch (PDOException $e) {
throw new Exception($e->getMessage(),$e->getCode(),$e->getPrevious());
}
}
return self::$instance;
}
}
}
// test
$a = singletonpdo::getinstance('mysql:host=localhost;dbname=test', 'root', '');
$b = $a->query('select version();');
$c = $b->fetch();
var_dump($c);
?>
donne
array(2) {
["version()"]=>
string(6) "5.5.16"
[0]=>
string(6) "5.5.16"
}
array(2) {
["version()"]=>
string(6) "5.5.16"
[0]=>
string(6) "5.5.16"
}
comme ça dans le connection.php tu peux utiliser la version "$a" histoire d'initialiser la chose et d'avoir un objet pdo de pret pour tous ce qui est "général".
et dans les fonctions / classes etc tu utilise la version "$x"
@+
Il en faut peu pour être heureux ......