Bonjour,
Je me pose une question :
Il y certain cas ou l'on a besoin de variables globales par exemple quand on ne peut pas passer un paramétre a une fonction parceque la fonction depuis laquelle on appel celle-ci n'a pas cette variable.
Bien sûr cela peut se resoudre en construisant des modèles complexes de classes, mais ce n'est pas toujours facile à mettre en place et au final quelque fois plus lourd qu'une simple fonction.
je vous rassure, je fais trés peu appel aux variables globales, seulement dans quelque cas :
- un tableau "visitor", j'en ai tout le temp besoin, il ne change pas
- la variable "id_page", j'en ai aussi tout le temps besoin, et elle ne change pas nom plus, il vaut mieux pas...
- des variables level,hierarchy,sector qui me permette de définir la position de mes élements dans une arborescence, trés pratique.
Une alternative aux variables globales est l'utilisation du mot clé static et un peu plus complexe le pattern "singleton", qui permet de créer un classe unique. Seulement aprés avoir essayer sa mise en place dans plusieur cas, je me demande quand un tel manoeuvre est vraiment utile.
Voilà un premier exemple avec global :
La classe Visitor est en fait plus complexe, mais sur le principe c'est ça elle sort un tableau si l'usager a une session ou un cookie.
Ensuite dans un fonction x qui peut être elle même appelée depuis une autre fonction je vais avoir besoin du tableau visitor, donc je fais "global $visitor".
Dans cet autre cas c'est la même chose, sauf que je ne fais pas appel a global mais à ma classe à chaque fois que j'ai besoin de mon tableau visitor.
Sur le principe c'est un peu plus propre, mais dans la pratique si mon application à peu de variables globales est ce vraiment utile?
Que faites vous quand vous avez besoin de variable globales?
Modifié par matmat (18 Jan 2008 - 22:00)
Je me pose une question :
Il y certain cas ou l'on a besoin de variables globales par exemple quand on ne peut pas passer un paramétre a une fonction parceque la fonction depuis laquelle on appel celle-ci n'a pas cette variable.
Bien sûr cela peut se resoudre en construisant des modèles complexes de classes, mais ce n'est pas toujours facile à mettre en place et au final quelque fois plus lourd qu'une simple fonction.
je vous rassure, je fais trés peu appel aux variables globales, seulement dans quelque cas :
- un tableau "visitor", j'en ai tout le temp besoin, il ne change pas
- la variable "id_page", j'en ai aussi tout le temps besoin, et elle ne change pas nom plus, il vaut mieux pas...
- des variables level,hierarchy,sector qui me permette de définir la position de mes élements dans une arborescence, trés pratique.
Une alternative aux variables globales est l'utilisation du mot clé static et un peu plus complexe le pattern "singleton", qui permet de créer un classe unique. Seulement aprés avoir essayer sa mise en place dans plusieur cas, je me demande quand un tel manoeuvre est vraiment utile.
Voilà un premier exemple avec global :
class Visitor {
var $visitor = array();
function get_user(){
return $this->visitor;
}
function verify_user(){
$this->visitor['id'] = '1';
$this->visitor['name'] = 'toto';
}
}
$set_session1 = new Visitor();
$set_session1 -> verify_user();
$visitor = $set_session1 -> get_user();
function exemple1(){
global $visitor;
echo $visitor['name'];
}
La classe Visitor est en fait plus complexe, mais sur le principe c'est ça elle sort un tableau si l'usager a une session ou un cookie.
Ensuite dans un fonction x qui peut être elle même appelée depuis une autre fonction je vais avoir besoin du tableau visitor, donc je fais "global $visitor".
function &singleton($class){
static $instances = array();
if(!isset($instances[$class])) $instances[$class] = new $class;
return $instances[$class];
}
class Visitor {
var $visitor = array();
function &get_user(){
return singleton('Visitor');
}
function verify_user(){
$this->visitor['id'] = '1';
$this->visitor['name'] = 'toto';
}
}
function exemple2(){
$set_session =& Visitor::get_user();
echo $set_session -> visitor['name'];
}
Dans cet autre cas c'est la même chose, sauf que je ne fais pas appel a global mais à ma classe à chaque fois que j'ai besoin de mon tableau visitor.
Sur le principe c'est un peu plus propre, mais dans la pratique si mon application à peu de variables globales est ce vraiment utile?
Que faites vous quand vous avez besoin de variable globales?
Modifié par matmat (18 Jan 2008 - 22:00)