je suis novice en php. Actuellement j'essaie de faire tourner une application mais elle génère le message d'erreur suivant :
"Définition de classe inexistante : PDO ../Classes/PDO.class.php "
Sachant que :
- Une classe DAO a été définie pour gérer les accès à la base de données.
- j'ai activé les extensions "php_pdo.dll", "php_pdo_mysqli.dll", "php_pdo_mysql.dll"
dans le fichier php.ini sans que cela change quelque chose.
- Il n'y a pas de fichier "PDO.class.php" dans mon répertoire ../Classes puisque la définition
de classes est censé être fournie en activant les extensions.
ci-après des bouts de codes qui peuvent vous aider à comprendre le contexte :
Code de la classe DAO
/**
* Classe d'accès aux données
* Cette classe est passé sur PDO (PHP Data Objects) qui permet d'abstraire la couche de données
* Voir fr.php.net/PDO pour plus d'informations
*/
class DAO {
private $dbh;
protected function __construct() {
try{
$this->dbh = new PDO( 'mysql:host=' . SERVER . ';dbname=' . DBASE , USER , PWD );
}
catch (PDOException $e){
echo "__warning\nErreur [DB] => " . $e->getMessage();
}
}
public function exec($p_query){
try{
$stmt = $this->dbh->prepare($p_query);
$stmt->execute();
}
catch (PDOException $e){
echo "__warning\nErreur [DB] => " . $e->getMessage();
}
return $stmt;
}
public function exec_nquery($p_query){
try{
$stmt = $this->dbh->prepare($p_query);
$this->dbh->beginTransaction();
$stmt->execute();
$this->dbh->commit();
}
catch (PDOException $e){
echo "__warning\nErreur [DB] => " . $e->getMessage();
}
}
}
Fonction qui a généré l'erreur
Sans doute suite à un appel du constructeur de DAO qui lui-même appelle celui de PDO.
cette fonction se trouve dans un autre fichier.
/*
* Permet d'inclure la classe si elle ne l'est pas quand l'utilisateur créer une instance
*/
function __autoload($ClassName) {
$_class = $DOCUMENT_ROOT . '../Classes/' . $ClassName . '.class.php';
if(file_exists($_class)){
require_once($_class);
}
else{
die("Définition de classe inexistante : " . $ClassName . "\n" . $_class . "\n" . $_factory);
}
}
Si quelqu'un peut me dire pourquoi la classe PDO n'est pas visible et accessoirement comment résoudre mon problème, ça m'aiderait beaucoup.
S'il faut des précisions aussi n'hésitez pas.
Merci d'avance.
P.S.:
Ma config:
Windows XP Pro SP2
Pentium 4 / 2,6 GH / 496 Ram