Don't muddy up the `$_GLOBAL` space. If you want to nix the class route and use a function with a statically scoped variable you can keep it contained. // getter + setter function function prefix_my_var( $value = null ) { static $s = null; if ( ! is_null( $value ) ) { $s = $value; } return $s; } // set + get $value = prefix_my_var( 'foo' ); // foo // get $value = prefix_my_var(); // foo Now if you pass a value it'll set+get it. And if you don't pass a value it'll just get the current value. echo "<pre>"; print_r( array ( prefix_my_var(), prefix_my_var( 'foo' ), prefix_my_var(), prefix_my_var( 'bar' ), prefix_my_var(), prefix_my_var( 'baz' ), ) ); Array ( [0] => [1] => foo [2] => foo [3] => bar [4] => bar [5] => baz )