I have some unclear (to me) behaviour in using classes and references to
session.
I submit you this code:
<?php
//some dummy classes
class A{
var $score;
function A(){
$this->pippo = "pluto";
}
function echoname(){
echo (get_class($this)."\n");
}
}
class B {
var $score;
function B(){
//assigning by value cause istances
//to be istances of a (same of $_SESSION[recorded])
//but non reference is made, so it's a copy
$this = $_SESSION["recorded"];
}
function echoname(){
echo (get_class($this)."\n");
}
}
class C {
var $score;
function C(){
//assigning by reference cause istances
//to be istances of c and not the same of $_SESSION[recorded]
$this = &$_SESSION["recorded"];
}
function echoname(){
echo (get_class($this)."\n");
}
}
session_start();
//new object stored in session.
$_SESSION["recorded"] =& new A();
echo "<pre>";
echo "session[\"recorded\"] classname: ";
$_SESSION["recorded"]->echoname();
$_SESSION["recorded"]->score = 99;
echo "test_var classname: ";
$test_var = new B();
$test_var->echoname();
$test_var->score = 100;
echo "test_var2 classname: ";
$test_var2 = new C();
$test_var2->echoname();
$test_var2->score = 200;
print_r($test_var);
print_r($test_var2);
print_r($_SESSION);
echo "</pre>";
?>
This three classes ar equal, except in the constructor. The problem is
explained in the comments, but essentially is this:
How do I create an istance of a class that has is a reference to another
istance previuously stored in session?
During this day of coding I finally (I hope) wrote a test that explains what
I can't do.
I really appreciate any help.
gianpaolo
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php