So I have hosting that refuses to update to PHP 5.3 (which is annoying but fine at the same time; I'm flexible), but the only thing that is really ticking me off is not having __callStatic available.
I have modules loaded that I'm wanting to consolidate down to a single class (i.e. have a class that loads modules, and then accesses those modules' functions through calls to the main class' __callStatic method), but when I uploaded from a local testing server to my server, obviously the __callStatic method didn't work.
Is there an alternative that is still static? I like the clean code look for the double colon (i.e. registry::some_func()
) instead of $registry->some_func()
.
Another down-side to this is that I'm now forced to use the global
keyword within functions (which by my own preference is very, very messy).
The code was also extremely fast using static methods instead of non-static methods, and in-turn much more clean.
Also: I've thought about writing the __callStatic method as usual with the 5.2 and then calling the methods explicitly, for example registry::__callStatic("some_func"), array("val", "val2", "val3")
and keeping things simpler that way, even being easier to migrate when they do upgrade to 5.3. Thoughts on this method?
Thanks!
If the only reason for wanting to do this is speed and subjective appeal of the double-colon, I would say grow to appreciate the tao of the dash-and-bracket, take the plunge and use object instances. The "clean code look" you speak of is like Hammer pants... cool one year, not so cool a few years later when you are older and wiser. __callStatic()
(IMVHO) is an unnecessary minor convenience at best and a workaround for poor class design at worst. :)