Why do we need a Constructor?
It is needed as it provides an opportunity for doing necessary setup operations like initializing class variables, opening database connections or socket connections, etc. In simple terms, it is needed to setup the object before it can be used.
"opening database connections"
Hoe werkt dit dan? Hoe roep ik een database connectie aan in een class? dat zie ik namelijk nergens staan....
in php OOP, een class, maakt het uit hoe je een var maakt? e.g. public, private, global etc.
of maakt dat niet uit? als het wel uitmaakt... wat is het verschil? en wanneer gebruik ik wat?
global (zonder private, protected, public) : $var = 'foo';
is voor de hele package bruikbaar. Packages worden niet gebruikt in PHP, misschien dat iemand zo snel weet of het namespace afhankelijk kan zijn.
private $private = 'hidden4all'; is alleen voor het eigen object bruikbaar
protected: $protected = 'objects_and_extends'; voor het eigen object en extends
public: $public = '4all'; is voor alles en iedereen zichtbaar.
Het advies is vaak om alles/zo veel mogelijk private te maken, en public getters te maken.
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.
EDIT:
ik denk dat ik er wel achter ben, als ik het zo lees.
klopt dit dan:
in de functie, van de constructor, zet ik als waarden, wat er door de class meegegeven word. het is vroeg ik ben moe dus ik geef de uitleg anders:
<?php
class User {
private $_username;
public function __construct($name) {
$this->_username = $name;
}
public function getUsername() {
return $this->_username;
}
}
$user = new User('jan'); //Dus wat ik hier invul, is de $name in de __construct($name); ?
echo $user->getUsername();
?>
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.