Is mijn class een goede class?
Midas:
'var' is PHP 4. Die mag je dus weglaten. :-)
Karl:
Het is netter om een apart db class te maken.
Storeman:
Je moet bedenken dat je een echte gebruiker hebt en wat deze kan doen.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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
<?
class user {
private $uId; // The user id
private $uName; // The user name
private $uPass; // The user password
private var $qLimit; // The limit for an query
/* Functions to set values */
// These functions sets data for uId, uName, uPass en qLimit
function set_uId ($value) {
$this->uId = $value;
}
function set_uName ($value) {
$this->uName = $value;
}
function set_uPass ($value) {
$this->uPass = $value;
}
function set_qLimit ($value){
$this->qLimit = $value;
}
// Functions to use data
// This function creates an user.
// Needs atleast uName and uPass to be set
public function createUser() {
mysql_query("INSERT INTO users (uName, uPass) VALUES ('".$this->uName."','".$this->uPass."')");
}
// This function deletes an user
// Needs atleast uId to be set
public function deleteUser() {
mysql_query("DELETE FROM users WHERE uId='".$this->uId."'");
}
// This function selects 1 or more users
// Needs for normal atleast the limit and for specific the uId
public function selectUser ($type) {
if($type == 'specific'){
mysql_query("SELECT * FROM users WHERE uId='".$this->uId."'");
} elseif($type == 'normal'){
mysql_query("SELECT * FROM users LIMIT ".$this->qLimit);
}
}
}
?>
class user {
private $uId; // The user id
private $uName; // The user name
private $uPass; // The user password
private var $qLimit; // The limit for an query
/* Functions to set values */
// These functions sets data for uId, uName, uPass en qLimit
function set_uId ($value) {
$this->uId = $value;
}
function set_uName ($value) {
$this->uName = $value;
}
function set_uPass ($value) {
$this->uPass = $value;
}
function set_qLimit ($value){
$this->qLimit = $value;
}
// Functions to use data
// This function creates an user.
// Needs atleast uName and uPass to be set
public function createUser() {
mysql_query("INSERT INTO users (uName, uPass) VALUES ('".$this->uName."','".$this->uPass."')");
}
// This function deletes an user
// Needs atleast uId to be set
public function deleteUser() {
mysql_query("DELETE FROM users WHERE uId='".$this->uId."'");
}
// This function selects 1 or more users
// Needs for normal atleast the limit and for specific the uId
public function selectUser ($type) {
if($type == 'specific'){
mysql_query("SELECT * FROM users WHERE uId='".$this->uId."'");
} elseif($type == 'normal'){
mysql_query("SELECT * FROM users LIMIT ".$this->qLimit);
}
}
}
?>
alvast bedankt =D
EDIT:::
Oke ik heb de tips een beetje gelezen ik hoop dat ik het nu beter heb gedaan:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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
<?
class user extends dbConnect {
private $uId; // The user id
private $uName; // The user name
private $uPass; // The user password
/* Functions to set values */
// These functions sets data for uId, uName, uPass en qLimit
function set_uId ($value) {
$this->uId = $value;
}
function set_uName ($value) {
$this->uName = $value;
}
function set_uPass ($value) {
$this->uPass = $value;
}
// Functions to use data
public function create() {
if(empty($this->uName) || empty($this->uPass)){
return 'The username or password was not set.';
} else {
$sql = "INSERT INTO users (uName, uPass) VALUES ('".$this->uName."', '".$this->uPass."')";
parent::query($sql);
}
}
// This function needs atleast uId to be set
public function delete() {
if(empty($this->uId)){
return 'User id was not set.';
} else {
$sql = "DELETE FROM users WHERE uId='".$this->uId."'";
parent::query($sql);
}
}
}
?>
class user extends dbConnect {
private $uId; // The user id
private $uName; // The user name
private $uPass; // The user password
/* Functions to set values */
// These functions sets data for uId, uName, uPass en qLimit
function set_uId ($value) {
$this->uId = $value;
}
function set_uName ($value) {
$this->uName = $value;
}
function set_uPass ($value) {
$this->uPass = $value;
}
// Functions to use data
public function create() {
if(empty($this->uName) || empty($this->uPass)){
return 'The username or password was not set.';
} else {
$sql = "INSERT INTO users (uName, uPass) VALUES ('".$this->uName."', '".$this->uPass."')";
parent::query($sql);
}
}
// This function needs atleast uId to be set
public function delete() {
if(empty($this->uId)){
return 'User id was not set.';
} else {
$sql = "DELETE FROM users WHERE uId='".$this->uId."'";
parent::query($sql);
}
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Aapje yeah
Dit is meer procedurele code met een naampje er omheen.
Je kan beter voor je database functies een interface maken.
Karl zou je een voorbeeld willen maken hoe jij het zou doen?
'var' is PHP 4. Die mag je dus weglaten. :-)
de functie delete() is logisch, dan verwijder je een user. Verder mis ik de constructor.
De selectUser functie hoort hier niet te zitten. Je object is een gebruiker, een gebruiker kan geen gebruiker selecteren. Dat is niet logisch. Wat zou een gebruiker verder nog kunnen... bijvoorbeeld:
zoekVriend( $naamVriend )
heeftToestemming(...)
logIn(..)
logUit(..)
Je moet bedenken dat je een echte gebruiker hebt en wat deze kan doen. Ik denk dat je nog iets verder in de manier van denken moet duiken, maar je bent op de goede weg!
Oke bedankt voor je comment Storeman daar heb ik wat aan (Y)
Dan moet je gewoon in je select even een extra stukje in de WHERE clausule plaatsen.
Een class stelt iets voor, bijvoorbeeld een gebruiker.
Een gebruiker heeft niets met een database te maken dus het extenden van een database class geeft aan dat je ontwerp niet klopt of dat jij het principe nog niet begrijpt.
Daarnaast is het in 99,99% van de gevallen niet nodig om het wachtwoord van de gebruiker ergens op te slaan, zoals in dit geval in een class.
Het wordt eenmaal gebruikt: controle gebruiker!
Als dat klopt is het wachtwoord verder niet meer nodig en mocht het ooit nodig zijn dan vraag je het gewoon opnieuw.
Succes!
Hoe moet ik het dan doen bijv: log in en log uit. ik dacht dat het zo was: een gebruiker is een object bijv Timmeh. En dan wat je allemaal met Timmeh zou kunnen doen? klopt dit of niet?
Tim Lijster schreef op 24.01.2010 11:55:
Niet wat je met een gebruiker kunt doen, maar juist wat die gebruiker zelf kan. Een object weet in principe alleen dingen over zichzelf en kan alleen dingen doen die op zichzelf betrekking hebben...En dan wat je allemaal met Timmeh zou kunnen doen? klopt dit of niet?
Inloggen is een kwestie van controleren of opgegeven gebruikersnaam en wachtwoord overeenkomen met die uit de database. Zo ja, dan is de gebruiker ingelogd. Dus:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
public function logIn($username, $password) {
// Als $username en $password correct zijn, is gebruiker ingelogd
}
?>
public function logIn($username, $password) {
// Als $username en $password correct zijn, is gebruiker ingelogd
}
?>
Als het inloggen gelukt is, zou je bijvoorbeeld het User object kunnen retourneren, in het andere geval retourneer je false.
Dus wat ik bijvoorbeeld in de class moet doen met een gebruiker die bijv bij een foto boek een foto kanuploaden
logIn()
logOut()
addPicture()
Of moet ik dan een class voor het uploaden van een plaatje een apparte picture class moeten hebben?
Aangezien een Picture geüpload wordt door een User, is die User een eigenschap van het Picture object.
Oke thx Ik denk dat ik het nu begrijp (Y)