Questions about "static" and serialization
| From: | Matthias Pigulla | Date: | Wed, 26 Oct 2005 11:57:22 +0000 |
| Subject: | Questions about "static" and serialization | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-19725@lists.php.net to get a copy of this message | ||
Hi internals,
I was experimenting with different approaches of maintaining state and
serializing objects in PHP5. The problem is handling static class
members and static variables inside methods.
First, I noted that static variables inside methods are shared between
instances. C++ seems to handle it the same way, but admittedly, I was a
little bit surprised: Such variables are available as "local" variables
in methods that are called using an instance, i. e. non-statically,
whereas static class variables can only be accessed using a static
reference to a class (self::, parent:: or Classname::).
However, this explains why static variables inside functions do not show
up when serializing object instances: Because the static variable is -
just like a static class variable - not "part of the object", but
belongs to the class.
So - has anybody ever considered serializing static variables as well?
Obviously they have to be treated separately at a per-class level; let
alone static variables in functions outside classes ;).
Would it be possible to write a session serialize handler that somehow
includes such static elements? I presume it should be possible to
"somewhere find" the static elements.
(Strictly spoken, an object instance's state expresses itself in
non-static members of the instance, so the above "static variables in
functions" stuff makes sense the way it is - if I want to maintain
per-instance state, I shouldn't be using local static variables, but
"plain" object members for that. However, when working with the
Singleton pattern, you don't come around using static at some level...)
Best regards,
Matthias