private, public, global...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Wesley Overdijk

wesley Overdijk

28/01/2010 09:40:00
Quote Anchor link
Ik had mijn laatste post ge edit, wou niet bumpen... :$
 
PHP hulp

PHP hulp

23/02/2025 16:48:24
 
- Jim  -

- Jim -

28/01/2010 09:41:00
Quote Anchor link
Misschien eens tijd voor wat leeswerk:

http://www.php.net/manual/en/language.oop5.decon.php
 
Richard van Velzen

Richard van Velzen

28/01/2010 09:42:00
Quote Anchor link
Jim schreef op 28.01.2010 09:40:
wesley schreef op 28.01.2010 09:30:
Maar ik las juist ergens: Private is evil.

En ik snap de constructor nog steeds niet. Wat ik probeer te bereiken is dat ik bij het aanmaken van de class de keuzen heb of ik al een waarde meegeef of niet. Zoals een database connectie zou wel fijn zijn. Al heb ik geen idee hoe ik dat doe.


Private is het beste te gebruiken. Deze kan je met een public get_x functie ophalen. Wie zegt dat private evil is, snapt het denk ik niet.

Een constructor wordt gebruikt om het object aan te maken.


Ik denk dat je nog veel te leren hebt. Ik zeg dat private evil is, protected is veel beter.
 
Wesley Overdijk

wesley Overdijk

28/01/2010 09:44:00
Quote Anchor link
@Jim: Hou jij van leeswerk? Nee he :P Daarom maak ik 1 topic, met vragen over het OOP. :$ mensen hoeven op zich ook niet te reageren hoor. Ik bedoel, ik heb de constructor net opgezocht en ik snap het, is vrij simpel. wat ik me wel nog afvraag is wat er gebeurd, als je een constructor hebt... maar:

$class = new class();

doet. dus geen waardes meegeeft. wat de constructor dan doet
 
- Jim  -

- Jim -

28/01/2010 09:59:00
Quote Anchor link
RichardvV schreef op 28.01.2010 09:42:
Jim schreef op 28.01.2010 09:40:
wesley schreef op 28.01.2010 09:30:
Maar ik las juist ergens: Private is evil.

En ik snap de constructor nog steeds niet. Wat ik probeer te bereiken is dat ik bij het aanmaken van de class de keuzen heb of ik al een waarde meegeef of niet. Zoals een database connectie zou wel fijn zijn. Al heb ik geen idee hoe ik dat doe.


Private is het beste te gebruiken. Deze kan je met een public get_x functie ophalen. Wie zegt dat private evil is, snapt het denk ik niet.

Een constructor wordt gebruikt om het object aan te maken.


Ik denk dat je nog veel te leren hebt. Ik zeg dat private evil is, protected is veel beter.


Wellicht dat het tijd is om even iets over polymorfism te lezen.

Private variabelen en functie's gebruikje om deze var/func te beschermen van gebruik van buitenaf.

Stel je hebt een Klasse User
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
<?php
class User {
    
    public $username;
    
    public function __construct($username)
    {

        $this->username = $username;
    }
}

Je maakt een nieuwe User-object nadat je de login hebt gevalideerd
$User = new User('gebruiker');

Je kan op deze manier de gebruikersnaam aanpassen wat je echt niet wilt!!!
$User->$username = 'root';

?>

Op het moment dat je de $username variabele private maakt
ben je beschermd tegen dit gevaar.
 
Wesley Overdijk

wesley Overdijk

28/01/2010 10:04:00
Quote Anchor link
en ik wil nog steeds gebeuren wat er gebeurd als je een constructor hebt, maar geen waardes meestuurt met het aan maken van het object :P
 
- Jim  -

- Jim -

28/01/2010 10:13:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
class Test {

    public function __construct($name)
    {

        echo $name;
    }
}
    
new
Test();
?>


Warning: Missing argument 1 for Test::__construct(), called in path/to/file.php on line x and defined in path/to/file.php on line y
 
Wesley Overdijk

wesley Overdijk

28/01/2010 10:15:00
Quote Anchor link
wat ik me eigenlijk afvroeg is...
kan dit:

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
<?php
class Test {

    public function __construct($setupValue)
    {

        if(!$setupValue)
        {

             $setupValue = "default waardes oid";
        }
    }
}
    
new
Test();
?>
 
Richard van Velzen

Richard van Velzen

28/01/2010 10:16:00
Quote Anchor link
Jim, waar de hel zie jij staan dat ik zeg dat alles public moet zijn? Als het aan mij lag zou je members alleen maar protected kunnen maken.

Echt, wat probeer je mij nou wijs te maken, ik denk dat ik "iets" meer ervaring met programmeren heb dan jij.
 
- Jim  -

- Jim -

28/01/2010 10:24:00
Quote Anchor link
wesley schreef op 28.01.2010 10:15:
wat ik me eigenlijk afvroeg is...
kan dit:


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
<?php
class Test {

    // Je verplicht hier dat er een waarde opgegeven moet worden.
    public function __construct($setupValue)
    {

        // Deze controle is dan overbodig, omdat de contructor een waarde ontvangen afdwingt.
        if(!$setupValue)
        {

             // Default waardes doe je in de contructor-sgnature. (Zie class: test2)
             $setupValue = "default waardes oid";
        }
    }
}

new
Test();


class Test2 {
        
    public function __construct($name = 'DitIsDeDefaultValue')
    {

        echo $name;
    }
}


// Creeer een TEST2 object met param.
new Test2('JouwNaam');
// Echo-ed 'JouNaam'


// Creeer een TEST object met de default-value

new Test2();
// Echo-ed 'DitIsDeDefaultValue'


?>
 
- Jim  -

- Jim -

28/01/2010 10:30:00
Quote Anchor link
RichardvV schreef op 28.01.2010 10:16:
Jim, waar de hel zie jij staan dat ik zeg dat alles public moet zijn? Als het aan mij lag zou je members alleen maar protected kunnen maken.

Echt, wat probeer je mij nou wijs te maken, ik denk dat ik "iets" meer ervaring met programmeren heb dan jij.


RichardvV schreef op 28.01.2010 09:42:
Jim schreef op 28.01.2010 09:40:
wesley schreef op 28.01.2010 09:30:
Maar ik las juist ergens: Private is evil.

Ik denk dat je nog veel te leren hebt.

Ik zeg dat private evil is, protected is veel beter.


1) Ik zeg NIET dat je alles public moet maken!
2) Ik zeg WEL dat private enorm nuttig is!
3) Wil jij dan verklaren waarom Private Evil is en Protected veel beter?

overigens :
RichardvV schreef op 28.01.2010 10:16:
Echt, wat probeer je mij nou wijs te maken, ik denk dat ik "iets" meer ervaring met programmeren heb dan jij.


Waar baseer je dit op???

p.s.: RichardvV: You are the bomb!
Gewijzigd op 01/01/1970 01:00:00 door - Jim -
 
Richard van Velzen

Richard van Velzen

28/01/2010 10:33:00
Quote Anchor link
Jim schreef op 28.01.2010 10:30:
RichardvV schreef op 28.01.2010 10:16:
Jim, waar de hel zie jij staan dat ik zeg dat alles public moet zijn? Als het aan mij lag zou je members alleen maar protected kunnen maken.

Echt, wat probeer je mij nou wijs te maken, ik denk dat ik "iets" meer ervaring met programmeren heb dan jij.


1) Ik zeg NIET dat je alles public moet maken!
2) Ik zeg WEL dat private enorm nuttig is!

Ik zeg dat precies hetzelfde, behalve dan private => protected.

Quote:
en :
RichardvV schreef op 28.01.2010 10:16:
Echt, wat probeer je mij nou wijs te maken, ik denk dat ik "iets" meer ervaring met programmeren heb dan jij.


Waar baseer je dit op???

p.s.: RichardvV: You are the bomb!

Dat baseer ik op je mening.
 
Wesley Overdijk

wesley Overdijk

28/01/2010 10:35:00
Quote Anchor link
Bedankt Jim. Ik snap het nu.

Dus als ik het goed begrijp, moet ik variabelen die alleen IN de class gebruikt mogen worden, private maken. of protected? maakt niet uit welke? en public is voor beide. En global is goor, want dat pushed het alle scripts en functies in. toch?
 
- Jim  -

- Jim -

28/01/2010 10:37:00
Quote Anchor link
Ik had nog een edit:
Wil je met jou ervaring, aan ons allen duidelijk maken waarom protected veel beter is dan private?

Dan kunnen we daar actie op ondernemen...
 
Wesley Overdijk

wesley Overdijk

28/01/2010 10:40:00
Quote Anchor link
@RichardvV: Als je zoveel beter bent, stop dan met bitchen op mijn topic en post wat nuttigs.
 
- Jim  -

- Jim -

28/01/2010 10:45:00
Quote Anchor link
wesley schreef op 28.01.2010 10:35:
Bedankt Jim. Ik snap het nu.

Dus als ik het goed begrijp, moet ik variabelen die alleen IN de class gebruikt mogen worden, private maken. of protected? maakt niet uit welke? en public is voor beide. En global is goor, want dat pushed het alle scripts en functies in. toch?


Als die variabele alleen voor de betreffende klasse is, zou ik hem private maken. (ook al bestaan daar meningsverschillen over)

Als je met overerving gaat werken en je wilt dat het bovenliggende object de variabele rechtstreeks mag aanspreken en wijzigen, zou ik hem protected maken.
Een andere oplossing hiervoor kan ook zijn dat je de variabele private houd, en een public function maakt waarin je de variabele kan setten en getten.

Global pushed niet! maar het is wel overal beschikbaar.

Php is niet echt een OOP taal die daar nauwkeurig mee omgaat. Om te begrijpen hoe OOP werkt kan je misschien beter refereren naar JAVA omdat java volledig OOP is, en wel heel strak omgaat met public, private en protected.
 
Remco nvt

Remco nvt

28/01/2010 10:46:00
Quote Anchor link
Ligt er gewoon aan waarom je de functie wilt gebruiken.
Bot weg gezegt:
public -> In je script, dus waar je het object hebt aangmaakt
protected -> Als je denkt dat de class wordt ge-extend en je deze functie daar ook handig gaat zijn
private -> Als de functie enkel in class kan worden gebruikt

Variable geld hetzelfde.
 
Wesley Overdijk

wesley Overdijk

28/01/2010 10:47:00
Quote Anchor link
ah.... nou, het enige wat ik wil, is dat als ik een class maak, dat vars die in die class horen, daarin blijven. Want, waarom zou je meerdere classes maken? 1 is toch genoeg?
 
Richard van Velzen

Richard van Velzen

28/01/2010 10:47:00
Quote Anchor link
Is het zo moeilijk te bedenken? Overerving betekent dat een bepaalde klasse *overerft* van een andere. Het *is* dus ook die klasse. Geef mij eens een voorbeeld waarin een kindklasse zijn eigen waardes niet mag bewerken?
 
Wesley Overdijk

wesley Overdijk

28/01/2010 10:54:00
Quote Anchor link
Ik heb geen idee wat je bedoeld...
Wel weer een vraag. als je vars wilt gebruiken in je class.. moet je dan alle vars die je gebruikt eerst aangeven bovenaan de class? of is dit niet nodig? of is dit niet nodig, maar wel de nette manier om iets te doen?
 

Pagina: « vorige 1 2 3 volgende »



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.