1

I have a Class with a lot of variables. To get a variable, I have to write this line in each function:

$x = new MY_Class();

I guess there has to be another way?

I tried:

function my_data(){
global $x;
$x = new MY_Class();
return apply_filters( 'my_data', $x )
}

Then, I tried to use $x->var in other functions that need the variables, but it doesn't work.

How can I make the global $x and its variables accessable by other functions? Thanks!

  • 2
    This is technically not a WordPress question, IMO. – John P Bloch Jun 19 '11 at 15:08
2

The way you've done it above should work. Once a variable is declared in global scope, it should be globally available (of course, your functions still need to declare it as a global: global $x;). You could also use the $GLOBALS superglobal variable:

global $x;
$x->var;

is the same as

$GLOBALS['x']->var;

I personally would use a static variable in your function:

function my_data(){
  static $data = null;
  if(null === $data)
    $data = new MY_Class();
  return $data;
}

Then anywhere in your code, you could just write $vars = my_data(); and have the one instantiation of your class.

Hope that helped!

  • Thanks, John! When I use global $x; $x->var ... in other functions, it doesn't work. instead, I have to use $v=my_data(), then, the $v->var works. – Jenny Jun 19 '11 at 23:17

Not the answer you're looking for? Browse other questions tagged or ask your own question.