Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

php static property

Tags:

php

class

static

I have two code snippets (regarding the static keyword) which I expect them to have same output, but actually the outputs are different.

The question is why?

Snippet 1

class base
{
    public static $var = 1;
}

class sub extends base
{
    public static $var = 2;
}

echo base::$var; // Outputs 1

1

Snippet 2

class base2
{
    public static $var2 = 1;
}

class sub2 extends base2
{
}

sub2::$var2 = 2;
echo base2::$var2; // Outputs 2

2

like image 557
nut Avatar asked Feb 18 '13 05:02

nut


2 Answers

I would like to add one more point to it.

STATIC variable are not associated to any particular instance/object of a class. Hence you modify the variable with Parent Class reference or Child Class reference, the same copy gets modified.

Hence apart from understanding Public Static as Global, Please understand it as not associated to any particular instance, hence with any class hierarchy reference you update a static variable , same memory location gets updated.

--

Vinod

like image 131
Vinod Jayachandran Avatar answered Oct 22 '22 10:10

Vinod Jayachandran


Public static variable acts like global variable.

As the scope of public static variable lies globally, you can ensure that any changes to the global variable can be seen across the program.This concept, you can analyze in your sample program....

Please have look in Static variable inheritance.

like image 8
Akash KC Avatar answered Oct 22 '22 10:10

Akash KC