Attributen krijgen geen nieuwe waarde

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daan C

Daan C

06/10/2012 22:28:06
Quote Anchor link
Welja, het is nogal raar (mijn eerste OOP creatie in PHP btw)...

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
            }      
}

?>
Gewijzigd op 06/10/2012 22:51:32 door Daan C
 
PHP hulp

PHP hulp

20/04/2024 05:55:46
 
Wouter J

Wouter J

06/10/2012 22:49:42
Quote Anchor link
Kun je aub de code tussen <?php tags zetten, dan wordt het leesbaar.

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
 
Daan C

Daan C

06/10/2012 22:52:00
Quote Anchor link
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
 
Jeffrey van Hees

Jeffrey van Hees

12/10/2012 00:27:37
Quote Anchor link
He "setters" zijn private? Wil je deze "van buiten af" kunnen aanpassen, moeten deze public zijn.
 
Wouter J

Wouter J

12/10/2012 07:58:59
Quote Anchor link
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.
 
Jeffrey van Hees

Jeffrey van Hees

12/10/2012 16:53:31
Quote Anchor link
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.
 
Jaron T

Jaron T

12/10/2012 19:16:59
Quote Anchor link
- geen foutafhandeling (mysql)
- random public property
- echo's
- wat nou OOP? dit is één class
- db zooi in je domain class?
 
Wouter J

Wouter J

12/10/2012 21:03:53
Quote Anchor link
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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.