OK, heres all the code... I have a BoundForm class, a BoundFormPage class, and a BoundTextField...
I create a BoundForm, add a BoundFormPage object to it, then add a BoundTextField to the BoundFormPage....then I add the root node (the BoundForm) to the SESSION... The Form, and Page survive serialization, but not the TextField...I dont know why. // these are the class definitions class BoundTextField{ var $name; var $value; function BoundTextField($name, $size, $value=""){ $this->name = $name; print "<input type=\"text\" name=\"$name\" value=\"".addSlashes($name)."\" ></input>\n"; } function isValid(){ if (strlen(trim($value))>0){ return true; } else { return false; } } } class BoundForm{ function BoundForm($lName){ $name = $lName; print "count = ".count($pages); } var $action; var $method; var $name; var $dbName; var $pages; // upon instantiation, write form to session object. function addPage($page){ if (!isset($this->pages[$page->name])){ print "adding page<br>"; $this->pages[$page->name] = $page; } else { // this page already exists, so we dont want to replace it, // or it will lose all its stored data... print " ".$this->pages[$page->name]->name." already exists<br>\n"; } } } class BoundFormPage{ // these are the fields (BoundFormElements) that you can add to a form page. var $fields; var $name; function BoundFormPage($lName){ $this->name = $lName; //$myTextField = new BoundTextField("No", 30); } // will determine if the page has been successfully filled in. function isComplete(){ for(reset($fields);$key = key($fields);next($fields)){ if (!$fields[$key].isValid()){ return false; } } } function addField(&$field){ print $field->name; print "<b>".count($this->fields)."</b>"; if (!isset($this->fields[$field->name])){ print("adding field ".$field->name); $this->fields[$field->name] = $field; } else { // this page already exists, so we dont want to replace it, // or it will lose all its stored data... print "already exists".$this->fields[$field->name]->name."<br>\n"; } } } //-------------------------------------------------------------- //and this code execute the sample classes above... // get our form object back, but dont overwrite it if (!session_is_registered("myForm")){ $myForm = new BoundForm("Application Form"); session_register("myForm"); } else { //return $_SESSION[$formName]; session_register("myForm"); } // construct the hierachy (note that all 'add' methods will not overwrite existing children of same names) $firstPage = new BoundFormPage("pageOne"); //$myTextField2 = new BoundTextField("gumber", 30); //$firstPage->fields[$myTextField2->name] = $myTextField2; $myTextField = new BoundTextField("CustomerNumber", 30); $firstPage->addField($myTextField); $myForm->addPage($firstPage); "Thies C. Arntzen" <[EMAIL PROTECTED]> wrote in message news:<[EMAIL PROTECTED]>... > On Fri, May 03, 2002 at 12:34:01AM +1200, Adam Langley wrote: > > Hi everyone, > > > > Im trying to store an object which contains an associative array of classes, > > each of which contains an array of classes, so a 3-tier hierachy, in the > > session object. However, the final tier gets lost upon > > serialization/deserialization, why is this and how can I prevent this from > > happening? > > send us a minimal testcase... > tc > > > > > Thanks in advance. > > > > - Adam Langley > > > > > > > > -- > > PHP General Mailing List (http://www.php.net/) > > To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php