Search code examples
phpfinal

What's the PHP equivalent of a static variable in other languages?


I'm wondering if PHP has a type of variable in classes that functions like static in other languages. And by that I mean all objects of the same class use the same variable and when it's updated on one it's updated on every one. Static is close because it is shared throughout all objects but I need to be able to update it. Will I have to use globals for this?


Solution

  • I think static is what you want. You can update a static variable, you just have to do it in a "static context" (ie. using the :: operator.

    class Class1 {
        protected static $_count = 0;
    
        public function incrementCount() {
            return self::$_count++;
        }
    }
    
    $instance1 = new Class1();
    $instance2 = new Class1();
    var_dump($instance1->incrementCount(), $instance2->incrementCount());
    

    will output:

    int 0

    int 1