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

Reply via email to