#33931 [Com]: __get and __set don't handle arrays correctly

2006-07-26 Thread christianl at ossafrica dot com
 ID:   33931
 Comment by:   christianl at ossafrica dot com
 Reported By:  wkonkel at gmail dot com
 Status:   No Feedback
 Bug Type: Scripting Engine problem
 Operating System: *
 PHP Version:  5CVS-2005-08-19
 Assigned To:  dmitry
 New Comment:

I have the same problem on Apache 2.0.55, PHP 5.1.4. I'm trying to
access object properties with __set and __get. In my application its
difficult to see whats causing it, but this seems to concur with some
of the behaviour I'm getting. (Array values being set to 0). On
occasion the page is output to download instead of parsed and I get a
segmentation fault in Apache. The reproduce code outputs the above
mentioned actual result.


Previous Comments:


[2006-01-10 08:46:28] matt at matttoddphoto dot com

I have had the same problem. This is terrible in the sense 
that I'd love to have this work, yet it doesn't. Shame.

When I have:

class Response {
private $collection;

public function __set($name, $value) {
$this-collection[$name] = $value;
}
public function __get($name) {
return $this-collection[$name];
}
}

The following does not assign anything but empty array()s 
into the private $collection property.

For instance (which is called from within another class, 
hence the $this reference):

foreach($posts as $post) {
$this-response-posts[$post['id']] = $post;
}


Now,

print_r($this-response-posts);

will output:

Array();

N.B. -- I had not noticed the bizarre activity with the 
properties reappearing in sequence immediately. In fact, I 
couldn't explain the bizarre behavior for two separate, 
nearly-identical loops like this one resulted in all of the 
data in the final of the two. Now I understand why it was 
combining the two. Bizarre indeed!



[2005-09-24 01:00:03] php-bugs at lists dot php dot net

No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to Open.



[2005-09-17 00:48:23] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip

I'm unable to replicate it anymore.



[2005-08-01 09:51:38] [EMAIL PROTECTED]

Dmitry, could you check it plz ?



[2005-07-31 20:01:33] [EMAIL PROTECTED]

And this with Sean's code:

PHP Notice:  Undefined property:  A::$foo in /home/jani/t.php on line
8

Notice: Undefined property:  A::$foo in /home/jani/t.php on line 8
PHP Notice:  Undefined property:  A::$foo in /home/jani/t.php on line
9

Notice: Undefined property:  A::$foo in /home/jani/t.php on line 9
PHP Notice:  Undefined variable: undefined in /home/jani/t.php on line
10

Notice: Undefined variable: undefined in /home/jani/t.php on line 10
NULL
array(2) {
  [bar1]=
  string(5) oink1
  [0]=
  string(4) blah
}
/usr/src/php/php5/Zend/zend_variables.h(45) :  Freeing 0x088ED84C (6
bytes), script=t.php
/usr/src/php/php5/Zend/zend_variables.c(120) : Actual location
(location was relayed)
Last leak repeated 1 time
/usr/src/php/php5/Zend/zend_execute.c(798) :  Freeing 0x088ED80C (16
bytes), script=t.php
Last leak repeated 1 time
/usr/src/php/php5/Zend/zend_hash.c(242) :  Freeing 0x088ED7B4 (40
bytes), script=t.php
Last leak repeated 1 time
/usr/src/php/php5/Zend/zend_execute.c(1031) :  Freeing 0x088ED754 (44
bytes), script=t.php
/usr/src/php/php5/Zend/zend_API.c(712) : Actual location (location was
relayed)
Last leak repeated 3 times
/usr/src/php/php5/Zend/zend_execute.c(1028) :  Freeing 0x088DE7CC (16
bytes), script=t.php
=== Total 11 memory leaks detected ===




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/33931

-- 
Edit this bug report at http://bugs.php.net/?id=33931edit=1


#33931 [Com]: __get and __set don't handle arrays correctly

2006-01-09 Thread matt at matttoddphoto dot com
 ID:   33931
 Comment by:   matt at matttoddphoto dot com
 Reported By:  wkonkel at gmail dot com
 Status:   No Feedback
 Bug Type: Scripting Engine problem
 Operating System: *
 PHP Version:  5CVS-2005-08-19
 Assigned To:  dmitry
 New Comment:

I have had the same problem. This is terrible in the sense 
that I'd love to have this work, yet it doesn't. Shame.

When I have:

class Response {
private $collection;

public function __set($name, $value) {
$this-collection[$name] = $value;
}
public function __get($name) {
return $this-collection[$name];
}
}

The following does not assign anything but empty array()s 
into the private $collection property.

For instance (which is called from within another class, 
hence the $this reference):

foreach($posts as $post) {
$this-response-posts[$post['id']] = $post;
}


Now,

print_r($this-response-posts);

will output:

Array();

N.B. -- I had not noticed the bizarre activity with the 
properties reappearing in sequence immediately. In fact, I 
couldn't explain the bizarre behavior for two separate, 
nearly-identical loops like this one resulted in all of the 
data in the final of the two. Now I understand why it was 
combining the two. Bizarre indeed!


Previous Comments:


[2005-09-24 01:00:03] php-bugs at lists dot php dot net

No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to Open.



[2005-09-17 00:48:23] [EMAIL PROTECTED]

Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip

I'm unable to replicate it anymore.



[2005-08-01 09:51:38] [EMAIL PROTECTED]

Dmitry, could you check it plz ?



[2005-07-31 20:01:33] [EMAIL PROTECTED]

And this with Sean's code:

PHP Notice:  Undefined property:  A::$foo in /home/jani/t.php on line
8

Notice: Undefined property:  A::$foo in /home/jani/t.php on line 8
PHP Notice:  Undefined property:  A::$foo in /home/jani/t.php on line
9

Notice: Undefined property:  A::$foo in /home/jani/t.php on line 9
PHP Notice:  Undefined variable: undefined in /home/jani/t.php on line
10

Notice: Undefined variable: undefined in /home/jani/t.php on line 10
NULL
array(2) {
  [bar1]=
  string(5) oink1
  [0]=
  string(4) blah
}
/usr/src/php/php5/Zend/zend_variables.h(45) :  Freeing 0x088ED84C (6
bytes), script=t.php
/usr/src/php/php5/Zend/zend_variables.c(120) : Actual location
(location was relayed)
Last leak repeated 1 time
/usr/src/php/php5/Zend/zend_execute.c(798) :  Freeing 0x088ED80C (16
bytes), script=t.php
Last leak repeated 1 time
/usr/src/php/php5/Zend/zend_hash.c(242) :  Freeing 0x088ED7B4 (40
bytes), script=t.php
Last leak repeated 1 time
/usr/src/php/php5/Zend/zend_execute.c(1031) :  Freeing 0x088ED754 (44
bytes), script=t.php
/usr/src/php/php5/Zend/zend_API.c(712) : Actual location (location was
relayed)
Last leak repeated 3 times
/usr/src/php/php5/Zend/zend_execute.c(1028) :  Freeing 0x088DE7CC (16
bytes), script=t.php
=== Total 11 memory leaks detected ===




[2005-07-31 20:00:32] [EMAIL PROTECTED]

Output with CVS HEAD:

Array
(
[foo2] = bar2
[foo3] = bar3
[0] = blah
)
/usr/src/php/php5/Zend/zend_hash.c(242) :  Freeing 0x088EF6FC (40
bytes), script=t.php
Last leak repeated 2 times
/usr/src/php/php5/Zend/zend_variables.h(45) :  Freeing 0x088EF664 (5
bytes), script=t.php
/usr/src/php/php5/Zend/zend_variables.c(120) : Actual location
(location was relayed)
Last leak repeated 2 times
/usr/src/php/php5/Zend/zend_execute.c(798) :  Freeing 0x088EF624 (16
bytes), script=t.php
Last leak repeated 2 times
/usr/src/php/php5/Zend/zend_execute.c(1031) :  Freeing 0x088EF56C (44
bytes), script=t.php
/usr/src/php/php5/Zend/zend_API.c(712) : Actual location (location was
relayed)
Last leak repeated 3 times
/usr/src/php/php5/Zend/zend_execute.c(1028) :  Freeing 0x088DE7CC (16
bytes), script=t.php
=== Total 14 memory leaks detected ===




The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/33931

-- 
Edit this bug report at http://bugs.php.net/?id=33931edit=1