Page 1 sur 1

Récupération de variables extérieures à une class (prog orie

Posté : 09 juin 2008, 20:53
par chrislabricole
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 !

Posté : 09 juin 2008, 20:58
par animithra
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 !

Posté : 09 juin 2008, 21:01
par chrislabricole
Euh... ben écoute je suis débutant en objet donc je sais pas justement ^^

Merci quand même ^^ :)

Posté : 09 juin 2008, 21:03
par Ryle
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);

Posté : 09 juin 2008, 21:08
par chrislabricole
Merci ça marche !

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

Aller hop ! Résolu ! :wink: