[quote='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.
[/quote]
Ik denk dat je nog veel te leren hebt. Ik zeg dat private evil is, protected is veel beter.
@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
[quote='Jim schreef op 28.01.2010 09:40'][quote='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.
[/quote]
Ik denk dat je nog veel te leren hebt. Ik zeg dat private evil is, protected is veel beter.[/quote]
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
<?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.
<?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'
?>