IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Passer une variable dans une class / function [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Passer une variable dans une class / function
    Bonjour,

    J'utilise une class pour l'envoi de mails.
    Aujourd'hui j'ai besoin de définir la valeur de $apiKey et $secretKey via une variable de session.
    Mais quand je le fait comme dans l'exemple ci-dessous, j'ai l'erreur :
    Parse error: syntax error, unexpected T_VARIABLE in ... blablablabl ...
    Ce qui est étrange c'est que quand je fait un echo d'une variable de session avant la déclaration de la class, j'ai bien ma valeur a l'écran.
    Mais quand je fait l'echo dans la class j'ai une autre erreur :
    Parse error: syntax error, unexpected T_ECHO, expecting T_FUNCTION in ... blablablabl ...
    Franchement je ne comprend pas pourquoi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    class Mail
    {
    	var $version = '0.1';
    	var $output = 'json'; 
    	var $secure = true;
    	var $debug = 1;
     
    	var $apiKey = $_SESSION['email_api_key']; 
    	var $secretKey = $_SESSION['email_api_pass'];  
     
    	// Constructor function
    	public function __construct($apiKey = false, $secretKey = false)
    	{
    		if( $apiKey ) $this->apiKey =$apiKey;
    		if( $secretKey ) $this->secretKey =$secretKey;
    		$this->apiUrl = (($this->secure) ? 'https' : 'http').'://api.blabla.com/'.$this->version.''; 
    	}
    ... ... ...
    }
    Merci de votre aide

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Les variables au sein d'une classe sont appelées "propriétés". On peut également les retrouver sous les dénominations "attributs", "membres" ou "champs", mais nous conservervons l'appellation "propriété" pour cette documentation. Elles sont définies en utilisant un des mots-clés public, protected, ou private, suivi d'une déclaration classique de variable. Cette déclaration peut comprendre une initialisation, mais celle-ci doit être une valeur constante, c'est à dire qu'elle doit pouvoir être évaluée pendant la compilation du code, et qu'elle ne peut pas dépendre d'informations déterminées lors de l'exécution de celui-ci pour pouvoir être évaluée.
    PHP : Propriétés

    Bref, une variable de session étant une variable, ce n'est pas une constante (Captain Obvious à la rescousse ) et donc tu ne peux pas t'en servir pour initialiser tes propriétés.
    Comme contournement, tu peux les initialiser dans le constructeur.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oulalala, cela dépasse de loin mes compétences.
    Comment tu les initialises ?

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    C'est quoi ces 'var' devant tes variables ?

    Sinon tu peux définir tes variables dans le constructeur si tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    class Mail
    {
    	public $version = '0.1';
    	public $output = 'json'; 
    	public $secure = true;
    	public $debug = 1;
     
    	private $apiKey = false; 
    	private $secretKey = false;  
     
    	// Constructor function
    	public function __construct()
    	{
                   if(isset($_SESSION['email_api_key']))  $this->apiKey = $_SESSION['email_api_key']; 
                   if(isset($_SESSION['email_api_pass']))  $this->secretKey = $_SESSION['email_api_pass']; 
     
    		//...
    	}
    ... ... ...
    }
    Mais bon on ne peut pas (comme tu le faisais au début) définir par défaut la valeur d'un attribut égal à une variable !!

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour vos réponses tout les deux.
    Comme je viens de le voir dans la doc en php5 il faut remplacer var par public.

    Pour la déclaration j'ai rajouté a ton code ceci afin de "me semble t'il" corespondre au mieux au code précédent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(isset($_SESSION['email_api_key']))  $this->apiKey = $_SESSION['email_api_key'] ; else $this->apiKey = false; 
    if(isset($_SESSION['email_api_pass']))  $this->secretKey = $_SESSION['email_api_pass'] ; else $this->secretKey = false;

    Cela te semble t'il correct ?
    Dernière modification par Invité ; 17/05/2013 à 17h40.

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Si tu y tiens tu peux faire comme cela mais comme par défaut j'avais attribué la valeur false à ces attributs, cela revient au même.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. récupérer une variable d'une fonction dans une classe
    Par free_dom dans le forum Général Python
    Réponses: 20
    Dernier message: 08/07/2009, 12h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. Réponses: 4
    Dernier message: 29/01/2008, 11h12
  4. Réponses: 1
    Dernier message: 15/02/2007, 00h24
  5. Mettre une valeur d'une table dans une variable
    Par Raphou96 dans le forum Access
    Réponses: 5
    Dernier message: 06/02/2006, 15h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo