Weblurk Weblurk - 4 months ago 34
PHP Question

How do I change a static variables value in PHP?

This is a simplified version of what I want to accomplish:

In my script I want a variable that changes true and false everytime the script is executed.

static $bool = true;

// Print differente messages depending on $bool
if( $bool == true )
echo "It's true!";
echo "It's false!";

// Change $bools value
if( $bool == true )
$bool = false
$bool = true;

But obviously what I'm doing is wrong. The variable
is constantly
and I haven't fully grasped the concept of static variables I presume. What am I doing wrong?


PHP is not able to keep variable values between requests. This means that each time your script is called, the $bool-variable will be set to true. If you want to keep the value between requests you have to use sessions or, if you want the variable shared between sessions, some caching mechanism like APC or Memcache.

Also, static is used in PHP to declare a variable shared on the class level. It is thus used in classes, and accessed like self::$variableName; or Foo::$variableName

You can read more about static properties here. From the docs:

Declaring class properties or methods as static makes them accessible without needing an instantiation of the class. A property declared as static can not be accessed with an instantiated class object (though a static method can).

Also, note that the word static has been overloaded since PHP 5.3, and can also be used to denote Late Static Binding, by use of static::