Just updated to the latest PHP 5.2-dev from CVS and now I get an Fatal
error with the following code
<?php
class foo {
public function __get($member) {
return array("foo"=>"bar","bar"=>"foo");
}
}
$f = new foo();
//error
foreach($f->bar as $key => $value) {
print "$key => $value";
}
?>
It throws a
"Fatal error: Cannot use array returned from foo::__get('bar') in write
context"
on the foreach line. Quite annoying :)
That worked fine with 5.1 and also with 5.2-dev from a few days/weeks
ago (don't know, when I cvs-uped last time, but can't be that long)
Is that expected/wished behaviour?
chregu
--
christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich
phone +41 44 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71
http://www.bitflux.ch | christian.stocker@bitflux.ch | GPG 0x5CE1DECB
For PHP 5.2.0-dev (cli) (built: Jul 12 2006 12:20:25), I get ...
Fatal error: Cannot use array returned from foo::__get('bar') in write
context in C:- on line 16
But only once, not 1 per line.
$f = new foo();
$a = $f->bar;
foreach($a as $key => $value)
fixes the code.
Just updated to the latest PHP 5.2-dev from CVS and now I get an Fatal
error with the following code
<?php
class foo {
public function __get($member) {
return array("foo"=>"bar","bar"=>"foo");
}
}$f = new foo();
//error
foreach($f->bar as $key => $value) {
print "$key => $value";
}?>
It throws a
"Fatal error: Cannot use array returned from foo::__get('bar') in write
context"on the foreach line. Quite annoying :)
That worked fine with 5.1 and also with 5.2-dev from a few days/weeks
ago (don't know, when I cvs-uped last time, but can't be that long)Is that expected/wished behaviour?
chregu
--
christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich
phone +41 44 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71
http://www.bitflux.ch | christian.stocker@bitflux.ch | GPG 0x5CE1DECB--
--
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
For PHP 5.2.0-dev (cli) (built: Jul 12 2006 12:20:25), I get ...
Fatal error: Cannot use array returned from foo::__get('bar') in write
context in C:- on line 16But only once, not 1 per line.
$f = new foo();
$a = $f->bar;
foreach($a as $key => $value)fixes the code.
I know (forgot to mention it), but still annoying as I have to fix a lot
of lines to do that.
If there are technical reasons for the fatal error, fine, I have to live
with it then.
But I still hope, it's just an overlook somewhere :)
chregu
Just updated to the latest PHP 5.2-dev from CVS and now I get an Fatal
error with the following code
<?php
class foo {
public function __get($member) {
return array("foo"=>"bar","bar"=>"foo");
}
}$f = new foo();
//error
foreach($f->bar as $key => $value) {
print "$key => $value";
}?>
It throws a
"Fatal error: Cannot use array returned from foo::__get('bar') in write
context"on the foreach line. Quite annoying :)
That worked fine with 5.1 and also with 5.2-dev from a few days/weeks
ago (don't know, when I cvs-uped last time, but can't be that long)Is that expected/wished behaviour?
chregu
--
christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich
phone +41 44 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71
http://www.bitflux.ch | christian.stocker@bitflux.ch | GPG 0x5CE1DECB--
--
christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich
phone +41 44 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71
http://www.bitflux.ch | christian.stocker@bitflux.ch | GPG 0x5CE1DECB
On Wed, 19 Jul 2006 15:32:42 +0200
christian.stocker@bitflux.ch (Christian Stocker) wrote:
For PHP 5.2.0-dev (cli) (built: Jul 12 2006 12:20:25), I get ...
Fatal error: Cannot use array returned from foo::__get('bar') in
write context in C:- on line 16But only once, not 1 per line.
$f = new foo();
$a = $f->bar;
foreach($a as $key => $value)fixes the code.
I know (forgot to mention it), but still annoying as I have to fix a
lot of lines to do that.If there are technical reasons for the fatal error, fine, I have to
live with it then.
If there is good reasons for this change, it should be a good candidate
for E_STRICT
but not E_FATAL/RECOVERABLE.
We should also have a notice in the upgrading notes. I can do it as
soon as we agreed on a solution.
-- Pierre
Hello Pierre,
Wednesday, July 19, 2006, 3:56:15 PM, you wrote:
On Wed, 19 Jul 2006 15:32:42 +0200
christian.stocker@bitflux.ch (Christian Stocker) wrote:
For PHP 5.2.0-dev (cli) (built: Jul 12 2006 12:20:25), I get ...
Fatal error: Cannot use array returned from foo::__get('bar') in
write context in C:- on line 16But only once, not 1 per line.
$f = new foo();
$a = $f->bar;
foreach($a as $key => $value)fixes the code.
I know (forgot to mention it), but still annoying as I have to fix a
lot of lines to do that.If there are technical reasons for the fatal error, fine, I have to
live with it then.
If there is good reasons for this change, it should be a good candidate
forE_STRICT
but not E_FATAL/RECOVERABLE.
Wrong answer and not an option at all - sorry. But we are actually
preventing potential SEGVs here. Just like the mighty reference thing that
lead to PHP 4.4.
We should also have a notice in the upgrading notes. I can do it as
soon as we agreed on a solution.
Why not write one since you are obviously aware of this. I wasn't until this
very momnet as i never use __get(), since i know it has too many issues and
causes to many problems. So here i am probbaly the wrong person to write
something.
Best regards,
Marcus
Hello Pierre,
Wednesday, July 19, 2006, 3:56:15 PM, you wrote:
On Wed, 19 Jul 2006 15:32:42 +0200
christian.stocker@bitflux.ch (Christian Stocker) wrote:For PHP 5.2.0-dev (cli) (built: Jul 12 2006 12:20:25), I get ...
Fatal error: Cannot use array returned from foo::__get('bar') in
write context in C:- on line 16But only once, not 1 per line.
$f = new foo();
$a = $f->bar;
foreach($a as $key => $value)fixes the code.
I know (forgot to mention it), but still annoying as I have to fix a
lot of lines to do that.If there are technical reasons for the fatal error, fine, I have to
live with it then.If there is good reasons for this change, it should be a good candidate
forE_STRICT
but not E_FATAL/RECOVERABLE.Wrong answer and not an option at all - sorry. But we are actually
preventing potential SEGVs here. Just like the mighty reference thing that
lead to PHP 4.4.
You don't have to answer in a bad way when Dmitry nicely already
explained the reasons. Especially when we all agreed on the main
cause.
Why not write one since you are obviously aware of this. I wasn't until this
very momnet as i never use __get(), since i know it has too many issues and
causes to many problems. So here i am probbaly the wrong person to write
something.
I retire my offer, do it yourself, you know it better. And you should
have done it in the first place.
--Pierre
Hello Pierre,
Wednesday, July 19, 2006, 9:42:54 PM, you wrote:
Hello Pierre,
Wednesday, July 19, 2006, 3:56:15 PM, you wrote:
On Wed, 19 Jul 2006 15:32:42 +0200
christian.stocker@bitflux.ch (Christian Stocker) wrote:For PHP 5.2.0-dev (cli) (built: Jul 12 2006 12:20:25), I get ...
Fatal error: Cannot use array returned from foo::__get('bar') in
write context in C:- on line 16But only once, not 1 per line.
$f = new foo();
$a = $f->bar;
foreach($a as $key => $value)fixes the code.
I know (forgot to mention it), but still annoying as I have to fix a
lot of lines to do that.If there are technical reasons for the fatal error, fine, I have to
live with it then.If there is good reasons for this change, it should be a good candidate
forE_STRICT
but not E_FATAL/RECOVERABLE.Wrong answer and not an option at all - sorry. But we are actually
preventing potential SEGVs here. Just like the mighty reference thing that
lead to PHP 4.4.
You don't have to answer in a bad way when Dmitry nicely already
explained the reasons. Especially when we all agreed on the main
cause.
I only tried to explain that this situation does not fall in the category
where E_STRICT
is the answer and then gave a short explanation.
Why not write one since you are obviously aware of this. I wasn't until this
very momnet as i never use __get(), since i know it has too many issues and
causes to many problems. So here i am probbaly the wrong person to write
something.
I retire my offer, do it yourself, you know it better. And you should
have done it in the first place.
Wow great. And later you i am the idiot to blame or what? Thanks for the
help.
Best regards,
Marcus
I guess this is associated with bug #36647 (
http://bugs.php.net/bug.php?id=36647 ) and I do not think that this
makes a lot sense for the applications outside and will break them. For
my company I decided that __get handlers really suck and I do not
encourage our developers to use it anymore.
I strongly request that the whole part of __* handlers gets revisited,
especially for memory allocation bugs (see my bugreport). I do not see
any benefit of having those methods when the methods either refuse to do
things which were possible before(BC!), nor when they do trash the
application like now in current release.
Leaving the methods untouched is a bad thing, since for security reasons
the memleaks should be fixed asap.
But "disabling" some of the functionality (return an internal array of
the class for further handling) is not that nice at all, too.
A smarter way has to be found, pls - if at all possible (derrick told me
that this is "by php design" and probably is unfixable by nature).
mike
Richard Quadling wrote:
For PHP 5.2.0-dev (cli) (built: Jul 12 2006 12:20:25), I get ...
Fatal error: Cannot use array returned from foo::__get('bar') in write
context in C:- on line 16But only once, not 1 per line.
$f = new foo();
$a = $f->bar;
foreach($a as $key => $value)fixes the code.
Just updated to the latest PHP 5.2-dev from CVS and now I get an Fatal
error with the following code
<?php
class foo {
public function __get($member) {
return array("foo"=>"bar","bar"=>"foo");
}
}$f = new foo();
//error
foreach($f->bar as $key => $value) {
print "$key => $value";
}?>
It throws a
"Fatal error: Cannot use array returned from foo::__get('bar') in write
context"on the foreach line. Quite annoying :)
That worked fine with 5.1 and also with 5.2-dev from a few days/weeks
ago (don't know, when I cvs-uped last time, but can't be that long)Is that expected/wished behaviour?
chregu
--
christian stocker | Bitflux GmbH | schoeneggstrasse 5 | ch-8004 zurich
phone +41 44 240 56 70 | mobile +41 76 561 88 60 | fax +41 1 240 56 71
http://www.bitflux.ch | christian.stocker@bitflux.ch | GPG 0x5CE1DECB--
--
mike peter bretz metropolis ag / entwicklung
email: m.bretz@metropolis-ag.de heinestraße 72
phone: +49-7121-348-120 d-72762 reutlingen
fax: +49-7121-348-111 http://www.metropolis-ag.de/
metropolis ag. creating social internetworks.