User_Mapper en User_Model
User_Mapper_Model
Code (php)
User_Model
Code (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
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
<?php
class User_Model extends Model {
public $user_data;
public function __construct($id) {
parent::__construct();
$this->user_data = $this->db->query("SELECT * FROM users
WHERE id = " . $this->db->quote($id) . "
")->fetch();
}
public function read($row) {
return $this->user_data[$row];
}
public function update($row, $value) {
$this->db->query("UPDATE users SET
" . $row . " = " . $this->db->quote($value) . "
WHERE id = " . $this->db->quote($this->user_data['id']));
}
}
?>
class User_Model extends Model {
public $user_data;
public function __construct($id) {
parent::__construct();
$this->user_data = $this->db->query("SELECT * FROM users
WHERE id = " . $this->db->quote($id) . "
")->fetch();
}
public function read($row) {
return $this->user_data[$row];
}
public function update($row, $value) {
$this->db->query("UPDATE users SET
" . $row . " = " . $this->db->quote($value) . "
WHERE id = " . $this->db->quote($this->user_data['id']));
}
}
?>
Model:
Code (php)
Zoals je ziet gebruik in een Mapper om een User op te halen en dan een user object te retourneren, maar dat werkt niet echt goed.
Ik gebruik 'm zo:
Code (php)
1
2
2
$latest_message = $user_mapper->find($latest_message['author']);
$post_starter = $user_mapper->find($post['author']);
$post_starter = $user_mapper->find($post['author']);
Maar ik krijg iedere keer de foutmelding:
Code (php)
1
Fatal error: Cannot redeclare class User_Model in /public_html/dev/models/user_model.php on line 24
Waarschijnlijk omdat ik 'm 2x gebruik. Hoe kan ik dit oplossen?
Groeten
Quote:
Waarschijnlijk omdat ik 'm 2x gebruik. Hoe kan ik dit oplossen?
Niet 2 keer dezelfde class aanroepen :)
require 'user_model.php';
in dit:
require_once 'user_model.php';
Gewijzigd op 05/04/2012 22:53:56 door - Raoul -
you're welcome ;)
Dit wil ik toch even naar boven halen. Moet zo'n mapper class static zijn?
http://www.phphulp.nl/php/forum/topic/oop-in-combinatie-met-database/81754/#580025
Static klasse kunnen -nog- niet in PHP, maar je hoeft niet allemaal static functies te maken: Gewijzigd op 06/04/2012 17:05:53 door Wouter J
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$gebruiker = User_Mapper::find_by_id(1);
$gebruiker->username = 'Piet';
echo $gebruiker->username;
User_Mapper::save($gebruiker);
?>
$gebruiker = User_Mapper::find_by_id(1);
$gebruiker->username = 'Piet';
echo $gebruiker->username;
User_Mapper::save($gebruiker);
?>
Is zoiets correct OOP?
En onder welke map horen de mappers, is dit onder de 'mappers' categorie, of 'models'?
Gewijzigd op 06/04/2012 20:07:52 door - Raoul -