# Questions about "static" and serialization

- Thread: https://externals.io/message/19725
- Original archive: https://news-web.php.net/php.internals/19725
- Started by Matthias Pigulla on 2005-10-26T11:57:22+00:00
- Messages: 2
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #19725 — Matthias Pigulla — 2005-10-26T11:57:22+00:00

URL: https://externals.io/message/19725#19725

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

---

## #19726 — Wez Furlong — 2005-10-26T13:12:03+00:00

URL: https://externals.io/message/19725#19726 · In reply to: #19725

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
