Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:19725 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 41411 invoked by uid 1010); 26 Oct 2005 11:57:27 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 41396 invoked from network); 26 Oct 2005 11:57:27 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 26 Oct 2005 11:57:27 -0000 X-Host-Fingerprint: 195.227.108.51 wfserver02.wf-ppr.de Windows 2000 SP2+, XP SP1 (seldom 98 4.10.2222) Received: from ([195.227.108.51:42036] helo=wfserver02.wf-ppr.de) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 7E/7D-22886-62F6F534 for ; Wed, 26 Oct 2005 07:57:27 -0400 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable X-MimeOLE: Produced By Microsoft Exchange V6.5.6944.0 Date: Wed, 26 Oct 2005 13:57:22 +0200 Message-ID: <00A2E2156BEE8446A81C8881AE117F192C183E@companyweb> X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Questions about "static" and serialization Thread-Index: AcXaJGymIgxnCdhQRVuC00EWLjgqwA== To: Subject: Questions about "static" and serialization From: mp@webfactory.de ("Matthias Pigulla") 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