Récupération de variables extérieures à une class (prog orienté objet)

Mammouth du PHP | 959 Messages

09 juin 2008, 20:53

Bonsoir !

Je débute en programmation en orienté objet, et j'ai un pitit problème qui devrait se résoudre facilement...

Voilà le code :
class Galerie {
	var $prenom_f;
	var $prenom_h;
	var $year;
	var $date_propre;
	var $date_brute;

	$this->prenom_f = $prenom_f_mysql;
	$this->prenom_h = $prenom_h_mysql;
	$this->year = $_SESSION['year'];
	$this->date_propre = $date_propre_mysql;
	$this->date_brute = $_SESSION['date'];
	
}
$prenom_f_mysql, $prenom_h_mysql, $date_propre_mysql sont des variables qui sont récupérées plus haut garce à mysql et une while...

Je pense qu'il n'arrive pas à sortir de la class pour aller les récupérées... pas sûr...

Voici l'erreur :
Parse error: syntax error, unexpected T_VARIABLE, expecting T_FUNCTION in /.../.../index.php on line 38
ligne 38 : $this->prenom_f = $prenom_f_mysql;

Merci à vous !

Eléphant du PHP | 174 Messages

09 juin 2008, 20:58

bonsoir.

je ne connais pas l'orientation objet de PHP mais j'ai l'habitude de JAVA, alors je me pose la question suivante :

comme tu as une classe et que tu définis ses attributs, ne serait-il pas logique de le faire dans un constructeur ?

sinon, ne serait-il pas logique d'avoir une méthode d'initialisation ?

tout ça est au conditionnel, comme je l'ai dit je n'ai pas encore pris le temps d'en savoir plus sur PHP objet...

bonne progra !
"Il vaut mieux avoir du luxe dans ses sentiments que sur ses habits, je ne crains, moi, le mépris de personne" Honoré De Balzac.
"On s'étonne trop de ce que l'on voit rarement et trop peu de ce que l'on voit chaque jour" Mme de Genlis
"L'absence diminue les médiocres passions et augmente les grandes comme le vent éteint les bougies et allume le feu" La RocheFoucauld
"People have hope because they can't see Death standing behind them" (anonymous)
"Of all the things I've lost, I miss my brain the most" (from a fanfic)

Mammouth du PHP | 959 Messages

09 juin 2008, 21:01

Euh... ben écoute je suis débutant en objet donc je sais pas justement ^^

Merci quand même ^^ :)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

09 juin 2008, 21:03

A l'intérieur d'une classe, tu ne dois avoir que des attributs et/ou des méthodes et rien d'autre, donc pas de $this->machin = $truc. En revanche tu peux faire cela à l'intérieur d'une méthode, ou éventuellement initialiser tes variables avec une constante lors de leur déclaration (mais c'est pas recommandé).

En général on utilise pour cela un Constructeur. Le constructeur est une méthode qui est appellée à chaque fois que tu créer une nouvelle instance de ta classe (avec "new"). L'idée est donc d'en profiter pour initialiser les variables de cette instance en les passant soit en paramètre où en les récupérant depuis les variables super-globales
class Galerie { 
    var $prenom_f; 
    var $prenom_h; 
    var $year; 
    var $date_propre; 
    var $date_brute; 

    /* en php4, le constructeur à le même nom que la classe
        en php5 on peut utiliser __contruct(), qui permet de surcharger le constructeur parent en cas d'héritage */
    function Galerie($prenom_f_mysql, $prenom_h_mysql, $date_propre_mysql) {
        $this->prenom_f = $prenom_f_mysql; 
        $this->prenom_h = $prenom_h_mysql; 
        $this->year = $_SESSION['year']; 
        $this->date_propre = $date_propre_mysql; 
        $this->date_brute = $_SESSION['date']; 
    }
}

$objGalerie = new Galerie($prenom_f_mysql, $prenom_h_mysql, $date_propre_mysql);
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Mammouth du PHP | 959 Messages

09 juin 2008, 21:08

Merci ça marche !

Je l'avais dit que ça aller vite se résoudre :D :D

Aller hop ! Résolu ! :wink: