Bonjour,
J'ai une classe (faite maison) qui hérite de PDO. A la création d'une instance de cette classe je créer mon objet PDO. Mais je pense que je n'appel pas bien le constructeur de la classe parent, puisque quand je fait un var_dump de l'instance, la variable (correspondant à l'objet PDO) est null.
Voici la classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 <?php /** Extension of class PDO which log all error message * @author Marwan Rabbaa * @version 0.1 b 1 */ class LogedPDO extends PDO { const ZONE = "UTC"; // timezone const PATH = "/var/log/skyline/pdo.txt" ; const XML_FILE = "/Documents and Settings/mrabbaa/Mes documents/workspace/skyrecon/class/mysql-errror-code.xml"; private $dbh; // a string name of database private $date; private $sql; // the SQL query we are trying to execute private $doc; // document DOM for readin error messages private $errorMessage; // a string private $handle = false; // boolean (if file is open) /** Construct the database link * @param The host name or ip adress * @param The database name * @param The login * @param The password */ public function __construct($host,$database,$login,$pass) { $this -> dbh = parent :: __construct ('mysql:host='.$host.';dbname='.$database.'', $login, $pass); $this -> doc = new DomDocument(); $this -> doc->load(self :: XML_FILE); $this -> handle = fopen(self :: PATH,'a'); } /** Execute an SQL querie * @return An array */ public function execute($sql) { $return = array(); $this->sql=sql; try { $smth =$this->prepare($this->sql); $smth->execute(); $result = $smth->fetchAll(PDO :: FETCH_NUM); if(count($result)==0) { $this->setMessage(0); } else { foreach($result as $indice => $tab) { foreach($tab as $key => $value) { array_push($return,$value); } } } } catch (PDOException $e) { $this->setMessage($smth->errorCode()); } } private function writeActivity($msg) { date_default_timezone_set(self :: ZONE); $this->date('l dS \of F Y h:i:s A'); fopen(self :: PATH, "a"); fwrite(self :: PATH, $this->date.$msg); } /** Set a message String correspondant to a pdo error code * @param Error code */ private function getMessage($param) { $errors = $this->doc->getElementsByTagName("error"); foreach($errors as $node) { if($node->hasAttribute("code") && $node->getAttribute("code") == $param) { $this->errorMessage = $node -> getAttribute ("value"); } } } /** Reading method @return The error message in cas of database error */ public function writeMessage() { $msg='Erreur MySQL : '.$this->errorMessage; $this->writeActivity($msg); } public function __destruct() { unset($this->doc); fclose($this->handle); } } ?>
Partager