Hulp bij variabele

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

18/12/2015 09:40:46
Quote Anchor link
Het lukt niet altijd om bij sommige variabelen te komen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
class body
{
  private
    $parts = NULL;
}

$subject = new body();
$subject->parts = array('once', 'twice');
print $subject->parts;
?>
 
PHP hulp

PHP hulp

15/01/2025 00:19:10
 
Bo Ter Ham

Bo Ter Ham

18/12/2015 09:47:50
Quote Anchor link
De variabele is toch private? Je kan de variabele alleen in de body class zelf gebruiken, als je de variabele vanuit een andere plaats wil aanpassen of uitlezen zul je setters en getters moeten gebruiken o.i.d.
 

18/12/2015 09:57:00
Quote Anchor link
Moet die variabele dan protected?
Gewijzigd op 18/12/2015 10:03:27 door
 
Randy vsf

Randy vsf

18/12/2015 10:04:08
Quote Anchor link
Protected betekent dat classes die de huidige class extenden de vars kunnen gebruiken.
Dus om te doen wat jij wilt moet idd de var op public gezet worden.

En voor een array is print_r, niet print.

En als je hem niet op public wilt zetten kan je met getters / setters werken.

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
<?php
class body
{
  private
    $parts = null;
    
    public function setParts($parts)
    {

        $this->parts = $parts;    
    }

    
    public function getParts()
    {

        return $this->parts;
    }
}

$subject = new body();
$subject->setParts(array('once', 'twice'));
print_r($subject->getParts());
?>
Gewijzigd op 18/12/2015 10:08:22 door Randy vsf
 
Bo Ter Ham

Bo Ter Ham

18/12/2015 10:08:59
Quote Anchor link
Er zijn 3 soorten visibility:
Public
Je kunt een variabele dan aanroepen vanuit elke andere class, maar dit wordt meestal gezien als bad practice.
Protected
Je kunt de variabele in de class zelf aanroepen en in iedere class die een child class is. Je kunt dus zoiets doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
class A extends body
{
    public function print()
    {

        print_r($this->parts);
    }
}

$A = new A();
echo $A->print();
?>

Maar dit is in jouw geval niet van toepassing.
Private
Alleen de class zelf kan de variabele aanroepen, meestal gebruik je dit dus in combinatie met setters en getters:
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
<?php
class body
{
    private $parts = NULL;

    public function setParts($parts)
    {

         $this->parts = $parts;
    }


    public function getParts()
    {

         return $this->parts;
    }
}

$subject = new body();
$subject->setParts(array('once', 'twice'));
print_r($subject->parts);
?>
 

18/12/2015 12:30:20
Quote Anchor link
Ja, public is inderdaad niet de bedoeling...
 
Thomas van den Heuvel

Thomas van den Heuvel

18/12/2015 14:54:51
Quote Anchor link
Desalniettemin zul je deze property op een of andere manier moeten ontsluiten om deze te kunnen raadplegen/wijzigen.
 

21/12/2015 14:08:39
Quote Anchor link
Het is hoogst ongebruikelijk om de private $parts public te maken!
Gewijzigd op 21/12/2015 14:08:52 door
 



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.