begin process at 2012 02 14 18:08:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Utiliser des variables globales, les passer en paramètre ou bien une autre méthode


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Utiliser des variables globales, les passer en paramètre ou bien une autre méthode

lundi 17 mars 2008 à 08:29:28 | Utiliser des variables globales, les passer en paramètre ou bien une autre méthode

takinelinfo

Bonjour à tous.
Aujourd'hui se pose à moi un gros dilem.
Voici mon cas. Je dois développer une application qui utilisera le multilangue. J'ai donc l'habitude faire un fichier par langue avec par exemple:

<?php
$config['accueil']['titre']="Bienvenue";
.....
?>

Selon ma variable de session, j'inclus tel ou tel fichier.

Hors vocici qu'arrive mon problème, les classes. Imaginons que je veuille inclure ce fichier dans mes classes et pouvoir utiliser ces variables dans mes fonctions, quel est la meilleure façon de faire. Utiliser global? Utiliser le passage de paramètre? Une autre façon de faire?

<?php
include_once('monFichier.php')
class myClass
{
   ...
   ...
 
   function myFunction(){
      global $config;
      ...
   }
 
}
ou
 
include_once('monFichier.php')
class myClass
{
   ...
   ...
 
   function myFunction($config){
      ...
      ...
   }
 
}
?>


Merci pour vos futures réponses :p

lundi 17 mars 2008 à 20:55:21 | Re : Utiliser des variables globales, les passer en paramètre ou bien une autre méthode

malalam

Administrateur CodeS-SourceS
Hello,

pourquoi pas une classe de configuration statique ?
class oConf {
    static $config;
   
    private static function getConf() {
       $sLng = 'EN';
       if(isset($_SESSION['language'])) {
             $sLng = $_SESSION['language']);
       }
       require_once 'conf/config_'.$sLng.'.php';
       self::$config = $config;
    }

    static function getMsg($sMsg)  {
       if(is_null(self::$config)) {
          self::getConf();
        }
       if(!isset(self::$config[$sMsg])) {
             throw new confException...
         }
       return self::$config[$sMsg]
    }
}

class myClass {
    function myFunc() {
       echo oConf::getTrans('message');
    }
}
lundi 17 mars 2008 à 20:56:20 | Re : Utiliser des variables globales, les passer en paramètre ou bien une autre méthode

malalam

Administrateur CodeS-SourceS
oConf::getMsg() à changer en oConf::getTrans()...ou l'inverse.
lundi 17 mars 2008 à 21:12:15 | Re : Utiliser des variables globales, les passer en paramètre ou bien une autre méthode

takinelinfo

Cette idée ne pas l'air mal du tout, par contre j'ai une petite question technique.
J'ai l'habitude d'utiliser les classes mais de cette facon.

$monInstance = new nomDeClass();
$monInstance->maFunction();

Hors la je suis un peu perdu. Reprenons:
class oConf {     //Ok
    static $config; //Correspond à quoi? C'est mon tableau je pense.
   
    private static function getConf() {   //Ok
       $sLng = 'EN';  //Je suppose que c'est le paramètre par défaut
       if(isset($_SESSION['language'])) {   //Ok
             $sLng = $_SESSION['language']);   //Ok
       }   //Ok
       require_once 'conf/config_'.$sLng.'.php';   //Ok
       self::$config = $config; //self::$config car c'est en static c'est ça? c'est comme si on fesait $this->config=$config; sauf que comme c'est static, c'est self
    }

    static function getMsg($sMsg)  {  //Ok
       if(is_null(self::$config)) { //Ok
          self::getConf();  //Ok
        }   //Ok
       if(!isset(self::$config[$sMsg])) { //Ok
             throw new confException...   //Ok
         }   //Ok
       return self::$config[$sMsg]   //Ok
    }   //Ok
}   //Ok
-> PERFECT<-


class myClass {   //Ok
    function myFunc() {   //Ok
       echo oConf::getMsg('message'); //AIE, fatal error, cest le oConf:: qui me gêne, on ne fait pas $chose = new oConf(), a quoi corresponde les ::
    }
}

Voila si tu pouvais prendre le temps de me répondre, se serait vraiment top. Sinon on m'a suggéré les constantes. Quel est l'avantage d'utiliser les classes dans ce cas (hormis le fait de tout développer en classe). En tout cas je trouvve ton idée plutôt pas mal.

lundi 17 mars 2008 à 22:04:23 | Re : Utiliser des variables globales, les passer en paramètre ou bien une autre méthode

malalam

Administrateur CodeS-SourceS
Re,

j'ai tapé ce code sur CS directement...ce qui n'est pas simple.
Reprenons afin de tester avec un $config bidon :
<?php
class oConf {
    static $config;
  
    private static function getConf() {
       $sLng = 'EN';
       if(isset($_SESSION['language'])) {
             $sLng = $_SESSION['language'];
       }
       self::$config = array('message'=> 'bla');
    }

    static function getMsg($sMsg)  {
       if(is_null(self::$config)) {
          self::getConf();
        }
       if(!isset(self::$config[$sMsg])) {
             throw new Exception('aie');
       }
       return self::$config[$sMsg];
    }
}

class myClass {
    function myFunc() {
       echo oConf::getMsg('message');
    }
}
$a = new myClass();
$a->myFunc();
?>

J'avais fait quelques erreurs de frappe, oubliant des points-virgules par-ci , des trucs par-là...

Appeler une métrhode statique d'une classe ne nécessite pas d'instancier un objet de cette classe : on fait appel à la classe, pas à un objet. C'est pour ça que je n'instancie pas oConf.
:: est l'opérateur de résolution de portée.
Je te redirige sur la doc (en français) :
http://www.php.net/manual/fr/language.oop5.static.php


lundi 17 mars 2008 à 22:15:21 | Re : Utiliser des variables globales, les passer en paramètre ou bien une autre méthode

takinelinfo

Je viens de tester c'est tout simplement terrible. Un grand merci. Je vais aller faire un tour sur la doc pour bien comprendre comment on utilise les static et tout ça. Est ce qu'a tout hasard tu connaitrais un très bon tuto sur PHP 5?

Juste un dernier truc sur ton code, tu penses qu'il vaut mieux utiliser ça, on plutot que de définir $config['message'], faire des constantes. En gros au lieu d'avoir un fichier avec des variables, avoir un fichier avec des constantes, ce qui évite de passer par une classe. Quel est t'on avis?

En tout cas un gros merci pour ta patience et tes explications très claires.

lundi 17 mars 2008 à 22:40:14 | Re : Utiliser des variables globales, les passer en paramètre ou bien une autre méthode

malalam

Administrateur CodeS-SourceS
Perso j'utilise du XML pour ça, alors bon...les classes permettent d'avoir quelquechose de constant et de bien structuré. Mais un simple fichier de variables ou de constantes sera plus rapide. Par contre...avec un gros volume de traductions (et de langues), ce n'est plus viable. Du tout. J'ai fait un back-oofice d'internationalisation ici, avec une classe gérant ces traductions. Il n'est pas aussi complet que celui que j'utilise (bah ouais...lol, c'est mon taf quand même), mais il fonctionne. Cherche à oLoc ou à internationalisation, pour avoir n exemple.


Cette discussion est classée dans : fichier, variables, utiliser, config, paramètre


Répondre à ce message

Sujets en rapport avec ce message

text to variable [ par Freneticode ] ---> FrenetiCodehello a tous ..voila je suis en train de cree une function qui me permet de liste toute les variables systeme...et les autres!!!voila variables [ par professeursidi ] Salut a tous,g un fichier identification.php qui va recuperer ds une base de donnees les variables $nom$prenom$passwordje veux declarer ces variables Longueur des variables php [ par pywy18 ] Bonjour,Je réalise un traitement php sur un fichier texte.Je lis celui ci ligne par ligne et enregistre tout dans une variable.Jusque maintenant cela blem tout simple en php [ par pierrolefou ] ben voila j'ai créé un formulaire tout con en html sur une page toute conne en html et je demande d'envoyer mes variables en methode post vers un fich Include, class et array [ par Hades5k ] Bonjour! J'ai un petit problème à utiliser un array dans un fichier que j'inclus... voici un peu le code : $classNames = array(); include_once('inc/ma Problème avec les variables de session [ par banzaichico ] Bonjour à tous,g un pti prob avec mes variables de session:quand je fais : FICHIER 1 :session_start();$theme= "mal";session_register('theme'):FICHIER modifier un fichier php [ par xactise ] Bonjours j'ai un petit problème j'arrive pas à trouver ! Je vous expliqueJ'ai un fichier config.php (../config/config.php) qui contient plein de varia utiliser du Xhtml dans du php [ par nuns ] Bonjour, je voulais savoir comment je pourrais utliser du Xhtml Stricte  et en etre sur que je l'utiliser dans du php. Parceque quand je fait des variables globales [ par dark_naruto25 ] Bonjour les amis, ça va paraitre un peu *** comme question,  et puis j'ai du mal cherche sur le site. Mais j'ai un problème avec une variable censé êt Chemin avec variables [ par Manubob ] Bonjour à toutes et à tous !J'aimerais savoir comment rédiger un "chemin" à l'aide de variables.j'ai essayer ça mais ça marche po:$chemin= $monDossier


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,012 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales