Re: Re: Session variables are not stored when set in implicitly calledconstructor!??
| From: | Jochem Maas | Date: | Thu, 21 Apr 2005 07:37:31 +0000 |
| Subject: | Re: Re: Session variables are not stored when set in implicitly calledconstructor!?? | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-213552@lists.php.net to get a copy of this message | ||
Jason Barnett wrote:
Adam wrote:look $_SESSION['Request'] is now a reference to the Request getInstance(); when this session is closed the object will automatically be serialized - no need to saveToSession or whatever!.... just make sure you have always declared the Request class before you start the session. so have the Request::getInstance() deal with checking/setting $_SESSION['Request'] internally.Hallo again, thank You for Your response.Well ok, but why can't you just have saveToSession() in the conditional block? <?php $_SESSION['Request'] = Request::getInstance();i agree that in *most* cases destructor should only clean up after object. unfortunatly for "request" class there are few requirements: 1) must allow immidiate use w/o any explicit initialization or finalizaion. e.g. at any file You can use only Request::getInstance()->isRefresh() /** test if this request was caused by browser refresh */. this should be one and only line (except for inclusion of request.php oc) referencing request class -- no explicit call to Request::saveToSession() or anything ugly and potentialy disastrous like that.// singleton for request class Request { function __destructor() {The __destructor() method is supposed to be about killing the class (Request). It's probably bad practice to be changing $_SESSION vars inside of there even if that $_SESSION var affects your class. Here, read this page and maybe it will make more sense to you: http://php.net/manual/en/language.oop5.decon.php$_SESSION["variable"] = "hallo";
if ($_SESSION['Request']->isRefresh() ) { $_SESSION['Request']->saveToSession(); /* etc. */ exit(); } /* Rest of script follows here */ ?> IMHO the point of OOP is to keep each function split into the minimal functionality that you need. This allows you to reuse code easier because a function does only the *minimum* amount of work necessary instead of extra (unintended) functionality.