Als vakantieproject ben ik begonnen met schrijven van een nieuwe CMS. Ik heb enige ervaring met Java en OO programmeren. Mede daarom leek het me leuk deze CMS OO op te zetten. Vandaag ben ik na het lezen van enige artikelen en threads hier op GoT begonnen met het database gedeelte.
De code is in PHP4, omdat de twee domeinen die ik op dit moment bezit op een PHP4 draaien. Ik weet dat PHP5 veel meer features heeft qua OO, maar op dit moment maak ik nog gebruik van PHP4. Voor het database gedeelte heb ik nu 3 klasses geschreven. Database, Query en Result. Database maakt de connectie aan en bewaard deze (Singleton). De result klasse voert de query daadwerkelijk uit en hier zijn acties op uit te voeren zoals num_rows, fetch_array(), insert_id() etc.
Op dit moment bouw ik een query op de volgende manier op:
De database klasse maakt van het Query object een daadwerkelijke string. Zoals je kan zien in de implementatie van mijn Query klasse gebruik ik soms arrays, soms strings enz. Ik vind het daarom een beetje rommelig. Heeft iemand ideeen om dit te verbeteren?
De code is in PHP4, omdat de twee domeinen die ik op dit moment bezit op een PHP4 draaien. Ik weet dat PHP5 veel meer features heeft qua OO, maar op dit moment maak ik nog gebruik van PHP4. Voor het database gedeelte heb ik nu 3 klasses geschreven. Database, Query en Result. Database maakt de connectie aan en bewaard deze (Singleton). De result klasse voert de query daadwerkelijk uit en hier zijn acties op uit te voeren zoals num_rows, fetch_array(), insert_id() etc.
Op dit moment bouw ik een query op de volgende manier op:
PHP:
1
2
3
4
5
6
7
8
9
10
| //Nieuwe Query $query = new Query(); $query->setFields("username, password"); $query->setTable(TBL_USERS); $query->addWhere("userid", "=", $userid); //Query uitvoeren en resultaat opslaan $result = database->select($query); $row =$result->fetch_array(); // Doe iets met $row |
De database klasse maakt van het Query object een daadwerkelijke string. Zoals je kan zien in de implementatie van mijn Query klasse gebruik ik soms arrays, soms strings enz. Ik vind het daarom een beetje rommelig. Heeft iemand ideeen om dit te verbeteren?
PHP:
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
| $database =& Database::getInstance(); class Query { // ---------- Instance variables --------------------------- var $fields; // Fields to be selected var $tables; // Tables affected var $set; // sets var $where; // Where statements var $values; // Insert values var $limit; // Limit var $order; // ---------- Constructor ----------------------------------- function Query(){ $this->set = array(); $this->values = array(); $this->where = array(); $this->fields = "*"; $this->limit = "0, 30"; } // ---------- Queries -------------------------------------- function getFields(){ return $this->fields; } function getTables(){ return $this->tables; } function getWhere(){ return implode(" AND ", $this->where); } function getSet(){ return implode(", ", $this->set); } function getLimit(){ return $this->limit; } function getValues(){ return implode(", ", $this->values); } // ---------- Commmands ------------------------------------ function addWhere($field, $operator, $value){ global $database; $value = $database->escape($value); $string = "$field $operator '$value'"; array_push($this->where, $string); } function setFields($fields){ $this->fields = $fields; } function setTables($tables){ $this->tables = $tables; } function addSet($field, $value){ $global database; $database->escape($value); $string = $field."=".$value; array_push($this->set, $string); } function addValue($value){ global $database; $value = $database->escape($value); array_push($this->values, $value); } function setLimit($limit){ $this->limit = $limit; } function setOrder($priority, $type = DESC){ $this->order = $priority." ".$type; } } // End of class Query |