private, public, global...
Pagina: « vorige 1 2 3 volgende »
Ik had mijn laatste post ge edit, wou niet bumpen... :$
Jim schreef op 28.01.2010 09:40:
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.
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.
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.
$class = new class();
doet. dus geen waardes meegeeft. wat de constructor dan doet
RichardvV schreef op 28.01.2010 09:42:
Ik denk dat je nog veel te leren hebt. Ik zeg dat private evil is, protected is veel beter.
Jim schreef op 28.01.2010 09:40:
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.
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.
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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';
?>
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.
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
Code (php)
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
kan dit:
Echt, wat probeer je mij nou wijs te maken, ik denk dat ik "iets" meer ervaring met programmeren heb dan jij.
wesley schreef op 28.01.2010 10:15:
wat ik me eigenlijk afvroeg is...
kan dit:
kan dit:
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
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'
?>
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'
?>
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.
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:
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 :
Waar baseer je dit op???
p.s.: RichardvV: You are the bomb!
Jim schreef op 28.01.2010 09:40:
Ik denk dat je nog veel te leren hebt.
Ik zeg dat private evil is, protected is veel beter.
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 -
Jim schreef op 28.01.2010 10:30:
1) Ik zeg NIET dat je alles public moet maken!
2) Ik zeg WEL dat private enorm nuttig is!
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.
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 :
Waar baseer je dit op???
p.s.: RichardvV: You are the bomb!
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.
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?
Wil je met jou ervaring, aan ons allen duidelijk maken waarom protected veel beter is dan private?
Dan kunnen we daar actie op ondernemen...
@RichardvV: Als je zoveel beter bent, stop dan met bitchen op mijn topic en post wat nuttigs.
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?
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.
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.
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?
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?
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?