How to avoid repeatedly use the new statement to instantiate a class?

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?

Read More

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!

Related posts

Leave a Reply

1 comment

  1. 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!