Probleme attribut objet

huforija
Invité n'ayant pas de compte PHPfrance

13 avr. 2007, 00:06

Bonjour, je suis debutant en php5 et je rencontre quelques difficultes.

J 'ai 2 classes: forum et user.
user comporte plusieurs attributs: des chaines.
forum contient deux attributs: une chaine et un user.

Lorsque j'initie ces deux objets et que je fais un echo du forum, le user du forum est vide, je ne comprend pas pourquoi?

classe user:
<?php

class user{

 private $id;
 private $nom;
 private $prenom;
private $login;


  // Constructeur de la classe.
    function user($id,$nom,$prenom,$login) {
        $this->id = $id;
        $this->nom = $nom;
        $this->prenom = $prenom;
        $this->login = $login;
    }

     function __construct(){
     }




    // Méthode d'affichage de l'objet.
    function __tostring() {
        return 'user id: '.$this->id.'<br>'.'user nom: '.$this->nom.'<br>'.'user prenom: '.$this->prenom.'<br>'.'user login: '.$this->login.'<br>';
    }

    // méthode qui retourne l'id du user
    function getUserId(){
     return $this->id;
    }

    // méthode qui retourne le nom du user
    function getUserNom(){
     return $this->nom;
    }

    // méthode qui retourne le prenom du user
    function getUserPrenom(){
     return $this->prenom;
    }

    // méthode qui retourne l'id du user
    function getUserLogin(){
     return $this->login;
    }



    // méthode qui modifie l'id du user
    function setUserId($id){
     $this->id=$id;
    }

    // méthode qui modifie le nom du user
    function setUserNom($nom){
     $this->nom=$nom;
    }

    // méthode qui modifie le prenom du user
    function setUserPrenom($prenom){
     $this->prenom=$prenom;
    }

    // méthode qui modifie l'id du user
    function setUserLogin($login){
     $this->login=$login;
    }
}

?>

la classe forum:
<?php

class forum{

 private $name;
 private $user;

  // Constructeur de la classe.
    function forum($name,$user) {

        $this->name = $name;
        $this->user = $user;
    }

    // Méthode d'affichage de l'objet.
    function __tostring() {
        $this->user->setUserId('12');
        return 'forum: '.$this->name.'<br>userID: '.$this->user->getUserId().'<br>';
    }


}

?>
et enfin le fichier index:
<?php

 function __autoload($class_name) {
    require_once $class_name . '.php';
}

$user=new user(0,"nom","prenom","login");
$forum=new forum("forum1",$user);

echo($forum);


?>
merci

Mammouth du PHP | 505 Messages

13 avr. 2007, 07:50

Il y a une erreur dans la premiere classe. Tu définies a la fois le constructeur par le nom de la class et par le nom __construct(), cela devrait te générer un warning de type strict. Je te conseil de ne plus utiliser le constructeur du type nom de class et d'utiliser systématiquement __construct().

Ceci étant dit, ne voyant pas d'autre pb, j'ai tester ton code et il fonctionne correctement. J'ai bien en sortie un nom pour le forum.

Code : Tout sélectionner

forum: forum1 userID: 12

huforija
Invité n'ayant pas de compte PHPfrance

13 avr. 2007, 08:01

Oui c est normal que ca fonctionne :D , j ai oublié de supprimé une ligne.
Il faut enlevé:
$this->user->setUserId('12');

dans la méthode __tostring() de forum.php.

dans ce cas ca ne marche pas. Et c est la que je ne comprend pas?

Mammouth du PHP | 505 Messages

13 avr. 2007, 09:54

bah meme sans cette ligne ca marche pour moi...

Code : Tout sélectionner

forum: forum1 userID: 0

Invité
Invité n'ayant pas de compte PHPfrance

13 avr. 2007, 10:19

ba je comprend pas la, c est peut etre du a wamp alors?

Mammouth du PHP | 505 Messages

13 avr. 2007, 10:31

bah j'ai testé sur wamp...
avec un php 5.2.0

hufor ija
Invité n'ayant pas de compte PHPfrance

13 avr. 2007, 10:38

Ok ben je testerai ca ce soir, merci