Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what's the point of declaring static functions in PHP?

So in PHP you can have

Class A{
   function B(){}
}

and you can call this as if it were a static function:

A::B();

My question is...if I can do this, then why should I ever declare the function B() as static since doing so makes $this unavailable, so there's less flexibility, so you have everything to lose but nothing to gain...

or is there an advantage of declaring the function as static that I'm not aware of?

also I heard that "static calling of non static methods" are "deprecated"....what does that exactly mean especially in relation to this scenario? is calling A::B() when B() is not declared static something that I shouldn't be doing? if so, why is that the case?

like image 317
kamikaze_pilot Avatar asked Aug 10 '11 06:08

kamikaze_pilot


1 Answers

Because PHP tends to be a bit loosy-goosy around strictness (?) these sort of things work. The fact that they are deprecated means that sometime in a future release, it is likely not to work anymore. So if you are calling a non-static function in a static context, your program may break in a future PHP upgrade.

As for using it right now - the advantage to declaring a function as static is that you are deciding right there how that function should be used. If you intend to use a function in a static context, you can't use $this anyway, so you are better of just being clear on what you plan to do. If you want to use the function statically, make it static. If you don't, then don't. If you want to use a function both statically and non-statically, then please recheck your requirements :P

like image 77
Pelshoff Avatar answered Oct 22 '22 10:10

Pelshoff