Questions about "static" and serialization

php.internals

Matthias Pigulla

20 years ago
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

Wez Furlong

20 years ago
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. On 10/26/05, Matthias Pigulla <mp@webfactory.de> wrote: