2017-10-13 3 views
0

Je tente de créer des attributs dans une classe à l'aide d'une méthode. Il est possible de créer un attribut, mais comment puis-je ajouter une portée aux attributs? Par exemple, je veux que wachtwoord (mot de passe) soit privé, mais que le prénom soit public.Définition de l'attribut de classe avec l'étendue de la méthode

Code actuel

class UserEntity extends Entity{ 

/** 
* UserEntities constructor. 
*/ 
public function __construct($user_id){ 
    parent::__construct(); 
    $this->loadDatabase(); 
    $this->get($user_id); 
} 

/** 
* Get user form database 
* 
* @param $user_id 
*/ 
private function get($user_id){ 

    $prepare = $this->database->prepare(" 
     select * from gebruiker where gebruikerid = :user_id; 
    "); 

    $prepare->bindValue(':user_id', $user_id); 
    $prepare->execute(); 
    $result = $prepare->fetch($this->fetchMethod); 

    foreach($result as $key => $value){ 
     $this->{$key} = $value; 
    } 
} 

Résultat (print_r)

UserEntity Object 

( [base de données: protected] => AOP objet ( )

[gebruikerid] => test_val 
[0] => test_val 
[voornaam] => test_val 
[1] => test_val 
[achternaam] => test_val 
[2] => test_val 
[email] => test_val 
[3] => test_val 
[rol] => test_val 
[4] => test_val 
[wachtwoord] => test_val 
[5] => test_val 
[laatstelogin] => test_val 
[6] => test_val 
[status] => test_val 
[7] => test_val 
[registratiedatum] => test_val 
[8] => test_val 
[afbeeldingurl] => test_val 
[9] => test_val 
[initialen] => test_val 
[10] => test_val 
[geboortedatum] => test_val 
[11] => test_val 
[bsn] => test_val 
[12] => test_val 
[laatstonline] => test_val 
[13] => test_val 

)

Merci!

+0

Désolé pour le résultat buggé. –

Répondre

2

Vous devez déclarer les propriétés à l'avance:

class UserEntity extends Entity { 

    private $wachtwoord; 
    public $firstname; 

    ... 
} 

propriétés sont toujours ajoutées Dynamiquement public.

+0

Salut Deceze, merci pour la réponse rapide! Ça marche. –