Re: Re: CLASS/Object lifetime - > more info

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



REFERENCES.

the object you get back is a copy (foreach has the same
effect as creating a new variable as in the example below).

... see below ...

notice the use of the & symbol (and the 'refcount' values).
(there is loads of info out there on references/php4/objects
out there that explain it better than me.) - see what happens
when you start removing '&'s.

or you could try php5 and forget about 'object hell'. :-)

roger helgesen wrote:
The function that gives me trouble
---------
function fyll_sub_konto($pv){
                foreach($this->subposter AS $konto){
                        $konto->fyll_fra_post($pv);
                }

class Test
{
var $number;
var $subposter;

function Test($n = 0) { $this->number = $n; }

function sqar() { if (is_numeric($this->number)) { $this->number *= $this->number; } return $this; }
function doit() { echo strval($this->number),"\n"; }
function make() {	
	static $c = 1;
	$t = new Test($c++);	
	$s =& $t; // watch what happens when you remove the '&' (php4 only)
	$s->sqar();
	$this->subposter[] = $t->sqar();
}
function goan() {	
	$cnt = count($this->subposter);
	$this->doit();
	for($i=0;$i<$cnt;$i++) {
		// watch what happens when you remove the '&' (php4 only)
		$tmp =& $this->subposter[$i];
		$tmp->sqar();
		$this->subposter[$i]->doit();
	}
}
}

$t = new Test("infinity"); $i = 0;
while($i++ < 5) $t->make();
$t->goan();


}
-------------

$this->subposter is the array of CLASS2

function fyll_fra_post($post_vars){
    echo "(gruppe)class = ".get_class($this) ."<br>\n";
    $teller=0;
    foreach($this->poster AS $post=>$verd){
        $best="bestilt_".$post;
        $avik="avvik_".$post;
        $fakt="faktura_".$post;
    $this->poster[$post]["bestilt"]=$post_vars[$best];
    $this->poster[$post]["avvik"]=$post_vars[$avik];
    $this->poster[$post]["faktura"]=$post_vars[$fakt];
    }
    $this->endret='ja';
    $this->sett_sum();
}

If I print the data (after setting the new data) inside 'fyll_fra_post' it puts out the new data. If I do the same from 'fyll_sub_konto' (after foreach) it gives me the old data.


--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux