class en var

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bas D L

Bas D L

24/10/2012 09:37:36
Quote Anchor link
Hallo allemaal,
Ik ben bezig met OOP en ik snap bv niet waarom de naam niet wordt geechood

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
class Persoon
{

private $naam;
private $leeftijd     = 36;
private $plaats     = 'Haarlem';

    function printNaam($naam){
        return $this->naam;
    }
    
    function printLeeftijd(){
        return $this->leeftijd;
    }
    
    function printPlaats(){
        return $this->plaats;
    }
    
}

$oPersoon    = new Persoon();
echo $oPersoon->printNaam('Bas') , '<br />';
echo $oPersoon->printLeeftijd() , '<br />';
echo $oPersoon->printPlaats() , '<br />';
 
PHP hulp

PHP hulp

28/03/2024 21:52:07
 
Rick van Riel

Rick van Riel

24/10/2012 09:45:08
Quote Anchor link
Dit komt omdat je de waarde die je meestuurd in de functie printNaam niet word opgeslagen in de variabele $naam. Voeg dit toe aan je functie:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
function printNaam($naam){
    $this->naam = $naam;
    return $this->naam;
}

?>


Het vorige dat ik had gepost was niet goed.
Gewijzigd op 24/10/2012 09:48:26 door Rick van Riel
 
Bas D L

Bas D L

24/10/2012 09:49:58
Quote Anchor link
@Rick
Die heb ik aanstaan maar geeft geen error en als ik hem op public zet werkt het ook niet, althans ik krijg geen foutmelding

Toevoeging op 24/10/2012 09:51:22:

Ahh nu begin ik het te snappen ;-)
Hij werkt, thanks!
 
Rick van Riel

Rick van Riel

24/10/2012 09:51:54
Quote Anchor link
Ik had het verkeerde gepost sorry. Heb het aangepast omdat ik iets te snel kwam met mijn antwoord.
 
Ivo Breeden

Ivo Breeden

24/10/2012 09:53:35
Quote Anchor link
laat maar, bericht is veranderd.
Gewijzigd op 24/10/2012 09:54:48 door Ivo Breeden
 
Kris Peeters

Kris Peeters

24/10/2012 09:57:41
Quote Anchor link
Je vraag je af waarom 'Bas' niet op je scherm verschijnt.

Dat is omdat je niets doet met de parameter $naam.

function printNaam($naam){

Binnen die functie is $naam gelijk aan Bas (in jouw voorbeeld).
Als je wil dat die naam wordt doorgegeven aan het object, moet je zoiets doen

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
<?php
class Persoon
{
private $naam;
function
setNaam($naam) {
  $this->naam = $naam;
}
function
printNaam() {
  return $this->naam;
}
}


$oPersoon    = new Persoon();
$oPersoon->setNaam('Bas');
echo $oPersoon->printNaam() . '<br>';
?>

(edit: toegevoegd toen er nog geen berichten onder dit bericht stond)

Trouwens ... Je doet de echo buiten de class. Dus de functie printNaam() doet niet echt wat de naam doet vermoeden.

Functies die een waarde toewijzen aan een object, noemen we meestal Setters.
Functies die een waarde van een object teruggeven naar buiten, noemen we meestal Getters.

Dus het is gebruikelijk om deze functies
setNaam en getNaam te noemen
Gewijzigd op 24/10/2012 10:02:35 door Kris Peeters
 
Wouter J

Wouter J

24/10/2012 09:58:29
Quote Anchor link
Merk wel op dat het vanuit een OO inzicht beter is een setter en een getter te maken en deze niet te combineren in 1 method:
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
<?php
class Person
{
    private $name;
    private $age;
    private $city;

    public function __construct($name = '', $age = 0, $city = '')
    {

        $this->setName($name);
        $this->setAGe($age);
        $this->setCity($city);
    }


    public function setName($name)
    {

        $this->name = (string) $name;
    }


    public function setAge($age)
    {

        $this->age = (int) $age;
    }


    public function setCity($city)
    {

        $this->city = (string) $city;
    }


    public function getName()
    {

        return $this->name;
    }


    public function getAge()
    {

        return $this->age;
    }


    public function getCity()
    {

        return $this->city;
    }
}

?>
 
Bas D L

Bas D L

24/10/2012 10:00:39
Quote Anchor link
Genoeg huiswerk ;-)
Bedankt voor jullie reacties!

Toevoeging op 24/10/2012 13:46:14:

@Wouter, stomme of beginners vraag, maar waarom set en get?

Toevoeging op 25/10/2012 06:30:24:

@Kris
Waarom private $naam; ?
De wordt toch al gezet buiten de class, dan is ie toch overbodig?
Of moet je variabelen altijd noemen?

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
class Persoon
{
    private $naam;
    
    function setNaam($naam) {
      $this->naam = $naam;
    }
    
    function getNaam() {
      return $this->naam;
    }
}

$oPersoon    = new Persoon();
$oPersoon->setNaam('Bas');
echo $oPersoon->getNaam() . '<br>';
 



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.