I have come across an issue using arrays ond objects; I am using an
array to keep track of 'n' number of object(The code snippet below is
from my initial testing)
I first declare the object ($nr = new news_resource() ;), then call a
function of the object ($nr->params_init( ); ). This is the put into
the first element of the db, I then call the function again and put the
object in the next element array.
However when I print it all out at the end, all the elements of the
array store the object with the same values...
if I redeclare the object ($nr = new news_resource() ; ) again, before
calling the funciton then it gets added in fine.
I'm sure its a typical behaviour and is to do with pointers - but I
don't understand why reassiging the object ($obj = new my_class() )
before callings its funciton should break the link to the original
object (and maintain its state).
In my mind it should either always put a copy in the array or else
always be a pointer.
Can anyone explain why PHP works this way?
Code snippet below:
$nr = new news_resource() ;
$nr->params_init( 0, "www.num1.c om", "Link to num1", "This links to
number 1", 0, 0 );
$resources[] = $nr;
$nr = new news_resource() ; //why does this mean that the code works
and the array keeps a copy of the object instead of a pointer?
$nr->params_init( 0, "www.num2.c om", "Link to num2", "This links to
number 2", 0, 0 );
$resources[] = $nr;
$nr = new news_resource() ;
$nr->params_init( 0, "www.num3.c om", "Link to num3", "This links to
number 3", 0, 0 );
$resources[] = $nr;
Regards,
Rick Huby
array to keep track of 'n' number of object(The code snippet below is
from my initial testing)
I first declare the object ($nr = new news_resource() ;), then call a
function of the object ($nr->params_init( ); ). This is the put into
the first element of the db, I then call the function again and put the
object in the next element array.
However when I print it all out at the end, all the elements of the
array store the object with the same values...
if I redeclare the object ($nr = new news_resource() ; ) again, before
calling the funciton then it gets added in fine.
I'm sure its a typical behaviour and is to do with pointers - but I
don't understand why reassiging the object ($obj = new my_class() )
before callings its funciton should break the link to the original
object (and maintain its state).
In my mind it should either always put a copy in the array or else
always be a pointer.
Can anyone explain why PHP works this way?
Code snippet below:
$nr = new news_resource() ;
$nr->params_init( 0, "www.num1.c om", "Link to num1", "This links to
number 1", 0, 0 );
$resources[] = $nr;
$nr = new news_resource() ; //why does this mean that the code works
and the array keeps a copy of the object instead of a pointer?
$nr->params_init( 0, "www.num2.c om", "Link to num2", "This links to
number 2", 0, 0 );
$resources[] = $nr;
$nr = new news_resource() ;
$nr->params_init( 0, "www.num3.c om", "Link to num3", "This links to
number 3", 0, 0 );
$resources[] = $nr;
Regards,
Rick Huby
Comment