Moderator |
|
Dit heeft te maken met "scopes", dat wil zeggen, de "gebieden in je code" waar variabelen geldig zijn ("bestaan").
Het object $cyw00d van de klasse UserN() bestaat alleen binnen de scope van de functie SetUser(), daar buiten (in dit geval in de "globale scope") bestaat $cyw00d niet.
Persoonlijk zou ik je klasse iets anders opzetten, en de klasse-variabelen $username en $rangerpoints protected maken. Dat wil zeggen dat deze niet rechtstreeks (via het object) benaderbaar / aanpasbaar zijn. Dit mede omdat je eigenlijk al een functie hebt voor het instellen van een gebruikersnaam. Dit is nu een functie, maar zou dus eigenlijk een (publieke) methode van de klasse moeten worden (nota bene klasses zijn niet public of wat dan ook):
<?php
class UserN
{
protected $userName;
protected $rangerPoints;
public function setUserName($name) {
$this->userName = $name;
}
// en vervolgens heb je ook een (publieke) methode nodig om de naam weer uit te lezen
public function getUserName() {
return $this->userName;
}
}
$cyw00d = new UserN();
$cyw00d->setUserName('Cyw00d');
echo $cyw00d->getUserName();
?>
<?php class UserN { protected $userName; protected $rangerPoints; public function setUserName($name) { $this->userName = $name; } // en vervolgens heb je ook een (publieke) methode nodig om de naam weer uit te lezen public function getUserName() { return $this->userName; } } $cyw00d = new UserN(); $cyw00d->setUserName('Cyw00d'); echo $cyw00d->getUserName(); ?>
En als alle objecten van de klasse UserN een gebruikersnaam hebben, zou je deze ook in de constructor kunnen instellen. Ik zou zeggen, kijk onze tutorials over OOP eens door. |