Als je object-georienteerd programmeerd en je data ook persistent maakt m.b.v. een database dan sla je in feite objecten op in een database.
Zelf vind ik het enigsinds lastig om object georienteerd te programmeren in PHP. Dat komt vooral doordat je het volgende niet kan doen:
PHP:
1
| $object->functie()->nogeenfuntie(); |
heel irritant.
Als je dan toch oo programmeert in PHP dan kun je je oo-model sowieso omzetten naar een relationeel model. Vervolgens kun je een laag schrijven zodat je objecten kan opvragen en opslaan vanuit een mysql database.
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
| class woo_object {
var $id = -1; // permanent id
var $data = null; // data cache
function woo_object($id) {
$this->id = $id;
}
function get_data() {
if (!is_null($this->data))
return $this->data;
$result = mysql_query("SELECT OB_DATA FROM ".WOO_TABLE_OBJECT." WHERE OB_ = $this->id") or die("err: mysql_query:".mysql_error()."<br>".$query);
$row = mysql_fetch_row($result);
$this->data = $row[0];
return $this->data;
}
function set_data($data) {
$this->data = $data;
$data = mysql_real_escape_string($data);
$result = mysql_query("UPDATE ".WOO_TABLE_OBJECT." SET OB_DATA = '$data' WHERE OB_ = $this->id") or die("err: mysql_query:".mysql_error()."<br>".$query);
}
} |
Bovenstaand voorbeeld werkt altijd met live data, maar je kunt je natuurlijk ook voorstellen dat je alle velden van het object cached voor de snelheid. Daarnaast kun ook nog een extra laag tussen je objecten en mysql maken zodat je niet in je objecten direct met mysql-functies werkt (zodat je objecten lichtgewicht blijven en je makkelijker dingen kan aanpassen in de structuur).
[
Voor 49% gewijzigd door
seweso op 22-02-2004 13:34
]