Re: Problem after moving servers

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

 



On Mon, Sep 1, 2008 at 10:10 AM, Gav <ipv6guru@xxxxxxxxx> wrote:

>
>
> On Mon, Sep 1, 2008 at 9:23 AM, Evert Lammerts <evert.lammerts@xxxxxxxxx>wrote:
>
>> I'm pretty sure I found the problem - I should've spotted it earlier.
>>
>> The function ProfileList::render gets a reference to the $db object by
>> its parameter &$db. While you loop over your results, you pass the
>> reference on to $this->des->load. I'm guessing that the definition of
>> $this->des->load is something like function load($id, $db);, in which
>> case it's not getting a reference to the $db object but an actual copy
>> in PHP4. Since PHP 5 there is a new object model that makes sure that
>> any variable that holds an object is actually just a handle to the
>> object - so whenever you pass it to a function you use it as a
>> reference instead of a copy.
>>
>> To make it clear:
>>
>> class test {
>>  var $a = 1;
>>  function aa() {
>>    $this->a++;
>>  }
>> }
>>
>> $c = new test();
>> $d = $c;
>> $c->aa();
>> $d->aa();
>> var_dump ($c);
>>
>> results in:
>> object(test)#1 (1) { ["a"]=>  int(3) }
>>
>> This means you should first change the function definitions to not use
>> references for objects, so take away the & at every &$db parameter.
>>
>> Second you need to create a new $db object for your $this->des->load
>> function before the while loop in ProfileList::render. I think the
>> safest option is to do something like $db2 = new Db(...). You can also
>> use the keyword clone to clone an object, but i'm not sure what this
>> does with your internal DB handle.... you could try and see what
>> happens. Just add $db2 = clone $db; right before the while loop. Call
>> $this->des->load with $db2 instead of $db.
>>
>
> aha, excellent explanation , and $db2 = clone$db; worked fine!
>
> I was reading my way round php.net and getting closer I think, your
> explanation and probably saved my a few days , so thanks.
>

hmm, did I speak to soon, it does work well for the whole list, but as soon
as you select a region or speciality then it all goes pear shaped, I'll keep
looking.

Gav...


>
>
>
> --
> Gav...
>
>


-- 
Gav...

[LinkedIn : http://www.linkedin.com/in/ipv6guru]

www.16degrees.com.au | www.iwdp.co.uk | www.minitutorials.com

(Sponsorship slots available on above three sites!)

[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux