J'ai une classe avec beaucoup de variables. Pour obtenir une variable, je dois écrire cette ligne dans chaque fonction:
$x = new MY_Class();
Je suppose qu'il doit y avoir un autre moyen?
J'ai essayé:
function my_data(){
global $x;
$x = new MY_Class();
return apply_filters( 'my_data', $x )
}
Ensuite, j'ai essayé d'utiliser $x->var
dans d'autres fonctions nécessitant des variables, mais cela ne fonctionne pas.
Comment puis-je rendre le global $x
et ses variables accessibles par d'autres fonctions? Merci!
La façon dont vous l'avez fait ci-dessus devrait fonctionner. Une fois qu'une variable est déclarée dans la portée globale, elle devrait être disponible globalement (bien sûr, vos fonctions doivent toujours la déclarer comme globale: global $x;
). Vous pouvez également utiliser la variable super-globale $GLOBALS
:
global $x;
$x->var;
est le même que
$GLOBALS['x']->var;
Personnellement, j'utiliserais une variable statique dans votre fonction:
function my_data(){
static $data = null;
if(null === $data)
$data = new MY_Class();
return $data;
}
Ensuite, n'importe où dans votre code, vous pouvez simplement écrire $vars = my_data();
et avoir l'instanciation de votre classe.
J'espère que ça a aidé!