ID: 8130
Updated by: jmoore
Reported By: [EMAIL PROTECTED]
Status: Open
Bug Type: Scripting Engine problem
PHP Version: 4.0.6-dev
Assigned To: 
Comments:

Reproduced in 4.0.6-dev one for the bug squash

Previous Comments:
---------------------------------------------------------------------------

[2001-01-06 02:38:08] [EMAIL PROTECTED]
Confirmed in 4.0.4pl1 RC1

---------------------------------------------------------------------------

[2000-12-07 02:28:51] [EMAIL PROTECTED]
Is this the same as bug 6417?

---------------------------------------------------------------------------

[2000-12-06 11:23:23] [EMAIL PROTECTED]
OK, this only affects objects in the array whose methods
have been accessed.  Other objects are still copies.  It
also works on php-4.0.3pl1 on the Win32 platform.

---------------------------------------------------------------------------

[2000-12-05 20:28:28] [EMAIL PROTECTED]
A short script:
<?php
  class test_class_2{
        var $name;
        function distort_reality(){
                 echo("Method Called.<br>n");
                 return;
        }
  }
  $a[] = new test_class_2;
  $a[0]->name = 'Original';
  echo('$b = $a<br>'."n");
  $b = $a;
  echo("Original contains: {$a[0]->name}<br>n");
  echo("Copy contains: {$b[0]->name}<br><p>n");
  echo("Change contents for $b<br>n");
  $b[0]->name = 'Copy';
  echo("Original contains: {$a[0]->name}<br>n");
  echo("Copy contains: {$b[0]->name}<br><p>n");
  $a[0]->distort_reality();
  echo('Once again, $b = $a<br>'."n");
  $b = $a;
  echo("Original contains: {$a[0]->name}<br>n");
  echo("Copy contains: {$b[0]->name}<br><p>n");
  echo("Change contents for $b<br>n");
  $b[0]->name = 'Copy';
  echo("Original contains: {$a[0]->name}<br>n");
  echo("Copy contains: {$b[0]->name}<br>n");
?>

The output from the script:

$b = $a
Original contains: Original
Copy contains: Original

Change contents for $b
Original contains: Original
Copy contains: Copy


Method Called.
Once again, $b = $a
Original contains: Original
Copy contains: Original


Change contents for $b
Original contains: Copy
Copy contains: Copy

Basically, if $a is an array of objects and any method of an object is called any 
subsequent copy of $a becomes linked to the original.  Any change to the copy 
propagates through to the original.

Configure line:
 './configure' '--with-config-file-path=/usr/local/stronghold/conf' 
'--with-apxs=/usr/local/stronghold/bin/apxs' '--enable-versioning' '--disable-debug' 
'--with-zlib' '--with-gd=/usr/local' '--with-gdbm' '--with-db2' '--with-mysql' 
'--with-xml' '--with-ldap' '--with-cpdflib=/usr/local' '--with-png-dir=/usr' 
'--with-jpeg-dir=/usr' '--with-tiff-dir=/usr' '--with-xpm-dir=/usr/X11R6' 
'--enable-sysvshm=yes' '--enable-sysvsem=yes' '--enable-track-vars=yes' 
'--enable-bcmath=yes' '--enable-memory-limit=yes'

Running as a module under apache 1.3.14

---------------------------------------------------------------------------



ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=8130&edit=2


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to