[OOP] User class (Beginner)
Ik weet het ik heb laatst een topic gestart over winkelwagen in oop, maar ik zat me net te bedenken dat ik natuurlijk veel beter iets kan gaan maken waar ik later veel meer aan heb. Een user class dus.
Nu denk ik iets simpels gedaan te hebben maar vraag ik me eigenlijk af wat ik er nu mee kan doen?
Dit is wat ik heb:
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
48
49
50
51
52
53
54
55
56
57
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
<?php
# Database connectie maken
include('Config.php');
class User
{
# Nodige veriabelen
private $userid;
# Constructor, deze word bij aanvragen class automatisch opgeroepen.
function __construct($userid)
{
$qry = "SELECT
id,
naam,
avatar,
status
FROM
gebruikers
WHERE
id = '".mysqli_real_escape_string($conn, $userid)."'";
# Query Checken & Uitvoeren
if($sql = mysqli_query($conn, $qry))
{
if(mysqli_num_rows($sql) > 0)
{
# Variabelen zetten.
$rec = mysql_fetch_assoc($sql);
$this->username = $rec['naam'];
$this->useravatar = $rec['avatar'];
$this->userstatus = $rec['status'];
}
}
}
# Gebruikersnaam ophalen
public function GetUserName()
{
return $this->username;
}
# Avatar ophalen
public function GetUserAvatar()
{
return $this->useravatar;
}
# Gebruikersstatus ophalen
protected function GetUserStatus()
{
return $this->userstatus;
}
}
?>
# Database connectie maken
include('Config.php');
class User
{
# Nodige veriabelen
private $userid;
# Constructor, deze word bij aanvragen class automatisch opgeroepen.
function __construct($userid)
{
$qry = "SELECT
id,
naam,
avatar,
status
FROM
gebruikers
WHERE
id = '".mysqli_real_escape_string($conn, $userid)."'";
# Query Checken & Uitvoeren
if($sql = mysqli_query($conn, $qry))
{
if(mysqli_num_rows($sql) > 0)
{
# Variabelen zetten.
$rec = mysql_fetch_assoc($sql);
$this->username = $rec['naam'];
$this->useravatar = $rec['avatar'];
$this->userstatus = $rec['status'];
}
}
}
# Gebruikersnaam ophalen
public function GetUserName()
{
return $this->username;
}
# Avatar ophalen
public function GetUserAvatar()
{
return $this->useravatar;
}
# Gebruikersstatus ophalen
protected function GetUserStatus()
{
return $this->userstatus;
}
}
?>
Gewijzigd op 27/08/2010 13:13:46 door Milo S
Allereerst wat me opvalt:
- Geen PHPDoc
- Het includen van een pagina zou ik in de Index pagina doen, dit omdat je anders het overzicht kwijt raakt.
- Query:
Om de Query te laten uitvoeren zou ik een andere klassen maken. Je krijgt bijvoorbeeld dit:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Verder zou ik voor Avatar een nieuwe klasse aanmaken. Ook zou ik nog even kijken naar database normalisatie.
Je zou een aparte tabel voor een avatar moeten hebben denk ik zo.
Verder zou ik even wachten op reactie van de wat meer gevorderde want ik kan het ook mis hebben..
Gewijzigd op 27/08/2010 14:40:11 door Niels K
Bedankt voor de tips!
Over de aparte tabel avatar, dit zou ik niet doen want het is 1 regel waar alleen maar een image naam instaat... Zoals onze afbeelding hier in het forum.
Maar dan heb ik nog niet echt antwoord op m'n vraag.. Wat kan ik nu makkelijker dan dat ik anders kan doen... Sorry als mijn vraag niet goed naar voren kwam.
"Over de aparte tabel avatar, dit zou ik niet doen want het is 1 regel waar alleen maar een image naam instaat... Zoals onze afbeelding hier in het forum"
Ok, moet je zelf weten, maar ik legde het verband met de normalisatie van de database. Dat zou dus een aparte query worden.
"Maar dan heb ik nog niet echt antwoord op m'n vraag.."
Niet veel bijzonders dacht ik zo. Je kan beter een authenticatie class maken en daaruit opbouwen, Voorbeeldje van een lijstje hoe je het kan doen:
- Database
- Register
- Authenticatie
- Profile
- User
Etc.. Verder: Weet je hoe je een class aanroept en dergelijke?
Gewijzigd op 27/08/2010 15:28:49 door Niels K
Mmm nee ik heb totaal geen idee, ik ben heel nieuw in OOP heb paar keer de oop beginners handleidingen doorgelezen, maar raak er nog niet echt wijs uit daarom dacht ik laat ik het eens proberen.
- De interactie tussen je modellen, dus de user die een bericht post e.d.
- De interactie tussen de database en je modellen, dus het opslaan van het model 'gastenboek' of het zoeken van user met id=6 oid.
Voor de eerste heb je helemaal geen SQL oid nodig. De tweede implementeer je met een save() functie en statische zoekfuncties (User::getUserById($id) of User::getUserByEmail($email) ).
Een class is heel simpel aan te roepen
Verder tja, als het aanroepen was een class al moeite geeft, zou ik als ik jouw was nog even een paar tutorials volgen