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
As you mentioned, static properties and statically scoped variables
don't belong to an object instance, so it doesn't make sense to
serialize them.
--Wez.
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