Attributen krijgen geen nieuwe waarde
Ik werk met GETTERS en SETTERS, er is niks mis met de uitvoer, maar de waarde wordt niet aan het attribuut gegeven ? Ik veronderstel dat de fout bij mijn SETTER zit ?
Iemand die direct de fout ziet ? Alvast bedankt !
Quote:
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
58
59
60
61
62
63
64
65
66
67
68
69
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
<?php
class beoordeling {
// beoordeling ATTRIBUTES
private $naam;
private $herkenning;
private $content;
public $fouten = "";
// beoordeling CONSTRUCTOR
public function __construct($naam,$herkenning,$content){
$this->setNaam($naam);
$this->setHerkenning($herkenning);
$this->setContent($content);
}
// beoordeling SETTERS
private function setNaam($naam){
if (strlen($naam)>3){
$fouten .= " De ingevoerde naam lijkt niet aan de vereisten te voldoen. Gelieve dit even na te kijken en hierna opnieuw te proberen.";
}else{
$this->naam = $naam;
}
}
private function setHerkenning($herkenning){
$this->herkenning = $herkenning;
}
private function setContent($content){
$query = "SELECT * FROM waarderingen WHERE tekst=\"".$content."\"";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
if ($num_rows != 0){
$fouten .= " De tekst die je wou gebruiken staat al reeds in de database. Misschien heb je het bericht twee keer verzonden ?";
}else{
$this->content=$content;
}
}
// beoordeling GETTERS
public function getNaam(){
return $this->naam;
}
public function getHerkenning(){
return $this->herkenning;
}
public function getContent(){
return $this->content;
}
// beoordeling FUNCTIONS
// PRIVATE
// PUBLIC
public function objtodb(){
$naam = $this->getNaam;
$herkenning = $this->getHerkenning;
$content = $this->getContent;
echo $query = "INSERT INTO waarderingen(gebruikersnaam, persoonsbeschrijving, tekst) VALUES (\"".$naam."\",\"".$herkenning."\",\"".$content."\")";
mysql_query($query);
}
}
?>
class beoordeling {
// beoordeling ATTRIBUTES
private $naam;
private $herkenning;
private $content;
public $fouten = "";
// beoordeling CONSTRUCTOR
public function __construct($naam,$herkenning,$content){
$this->setNaam($naam);
$this->setHerkenning($herkenning);
$this->setContent($content);
}
// beoordeling SETTERS
private function setNaam($naam){
if (strlen($naam)>3){
$fouten .= " De ingevoerde naam lijkt niet aan de vereisten te voldoen. Gelieve dit even na te kijken en hierna opnieuw te proberen.";
}else{
$this->naam = $naam;
}
}
private function setHerkenning($herkenning){
$this->herkenning = $herkenning;
}
private function setContent($content){
$query = "SELECT * FROM waarderingen WHERE tekst=\"".$content."\"";
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
if ($num_rows != 0){
$fouten .= " De tekst die je wou gebruiken staat al reeds in de database. Misschien heb je het bericht twee keer verzonden ?";
}else{
$this->content=$content;
}
}
// beoordeling GETTERS
public function getNaam(){
return $this->naam;
}
public function getHerkenning(){
return $this->herkenning;
}
public function getContent(){
return $this->content;
}
// beoordeling FUNCTIONS
// PRIVATE
// PUBLIC
public function objtodb(){
$naam = $this->getNaam;
$herkenning = $this->getHerkenning;
$content = $this->getContent;
echo $query = "INSERT INTO waarderingen(gebruikersnaam, persoonsbeschrijving, tekst) VALUES (\"".$naam."\",\"".$herkenning."\",\"".$content."\")";
mysql_query($query);
}
}
?>
Gewijzigd op 06/10/2012 22:51:32 door Daan C
Daarnaast is er nog HEEL VEEL mis met je PHP. Leer eens de basis, ga dan eens OO leren. Zomaar wat puntjes:
- Waar komt die $fouten variabele telkens vandaan?
- getName is geen property maar een method, zelfde voor de andere getters
- een query echoën heb ik nog nooit gezien...
- een echo in een method is verboden
- ik mis foutafhandeling
Gewijzigd op 06/10/2012 22:52:21 door Wouter J
Wouter J op 06/10/2012 22:49:42:
Kun je aub de code tussen <?php tags zetten, dan wordt het leesbaar.
Mijn excuses, heb dit even aangepast ;)
Mag lockje op, haakjes bij mijn GET functie vergeten :(
Verdere feedback mag natuurlijk ? Aangezien het mijn éérste OOP creatie is in PHP
Gewijzigd op 06/10/2012 23:50:02 door Daan C
He "setters" zijn private? Wil je deze "van buiten af" kunnen aanpassen, moeten deze public zijn.
Jeffrey, sommige properties wil je niet vanaf buiten setten dan gebruik je dus private of protected setters. Al zou ik wel protected van private maken, dan ben je al voorbereid op eventuele uitbreiding later.
Wouter J op 12/10/2012 07:58:59:
Jeffrey, sommige properties wil je niet vanaf buiten setten dan gebruik je dus private of protected setters. Al zou ik wel protected van private maken, dan ben je al voorbereid op eventuele uitbreiding later.
Dat het niet altijd gewenst is om properties van buiten af te kunnen 'setten', dat begrijp ik. Maar de TS verteld niet op welke manier hij zijn setters aanroept. Hij zegt dat zijn setters niet werken. Als ze private zijn en hij probeert het van 'buiten af', dan werkt het inderdaad niet, toch? Ik denk dat hij daar tegen aan loopt.
- random public property
- echo's
- wat nou OOP? dit is één class
- db zooi in je domain class?
Quote:
- wat nou OOP? dit is één class
Alsof 1 klasse niet OO kan zijn?
Gewijzigd op 12/10/2012 21:04:59 door Wouter J