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 BoundFormPagethen 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 pagebr;
$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 existsbr\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