#22288 [Opn]: Local vars and function parameters not accessible!
| From: | andre dot goncalves at martelozero dot com | Date: | Sun, 23 Feb 2003 00:02:45 +0000 |
| Subject: | #22288 [Opn]: Local vars and function parameters not accessible! | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-33946@lists.php.net to get a copy of this message | ||
ID: 22288
User updated by: andre dot goncalves at martelozero dot com
Reported By: andre dot goncalves at martelozero dot com
Status: Open
Bug Type: Variables related
Operating System: Linux
PHP Version: 4.3.1-dev
New Comment:
Ok, I'm sorry I didn't get any answer from you guys.
The problem is solved. I don't know how, but it suddenly stoped, after
I made some random and desperate changes in the code somewhere.
What I will never understand is what kind of error in my code, that is
not detected by PHP causes such abnormal behaviour.
PHP did not return any Notice, Warning, or Error message, it simply
went beserk with variables. I don't really understand much about this
issues, but someone told me that the stack was getting corrupted, and
to look for recursive function calls. (there were none)
Anyway I think that this issue should be investigated. Not just simply
say that there were "serious issues" with my code. Off course there
were, but certainly not with cookies.
The thing is, if there is a reason for PHP to go nuts, it should issue
some kind of warning (like it normally does).
Thanks anyway
Keep up developing this amazing thing.
Previous Comments:
------------------------------------------------------------------------
[2003-02-19 04:40:10] andre dot goncalves at martelozero dot com
What do you mean by serious issues? Maybe you don't understand the
questions I made, or the absurd behaviour that I describe - or in the
other hand, maybe I don't understand that some stupid error I made
somewhere (with cookies you say) might cause this strange behaviour of
PHP (you sound very natural about it).
Well I have some serious questions:
1. What's the relation between cookies and the Empty + Unavailable +
Unassignable local variables and function parameters in the method's
implementation?
2. What causes the script to go crazy in terms of variable value
assignment?
3. Why do local vars fail to accept values from a certain point on?
4. Hhy it only happens the first time the script runs, and why only in
the second time the method is called? After a code-induced &
cookie-related error, you say?
5. How does a variable echo a value that it was not assigned? Again,
how does $this->tmp2 = "whatever" makes $_query = "whatever"? And why
var_dump'ing ($_query) returns NULL?
6. Why $localvar = "foo", does not make $localvar = "foo", i.e., why
local vars and parameters are unavailable and unassignable?
Thanks
------------------------------------------------------------------------
[2003-02-18 23:52:01] sniper@php.net
Your script has serious issues...it sets some cookies?
It also has some errors, apparently caused by the missing
cookie value? This really doesn't seem like any
problem in PHP..
------------------------------------------------------------------------
[2003-02-18 23:26:04] andre dot goncalves at martelozero dot com
Hi! this is really a spooky situation!
A. problem with a class only happening in one site (other
implementations use same class and always worked fine).
B. It only happens the first time I hit the site.
C. press F5, or re-enter address, and the problem is gone.
D. restarting browser, causes the problem again.
E. problem is:
The 2nd time I call a method on a certain object,
neither the method parameters, neither the global vars are
acessible, only the pre-declared class members are there.
Remember, i have made a call to this method in the same script
exexcutation, some 20 lines before.
F. Even more spooky, some vars tend to echo values (wrong
values) but var_dump shows NULL for the same var,
right from the next line of code!!!
G. Check below example:
output 1, 3 and 4 show vardump of function parameters NULL
ouput 2 shows that local var $_query (the function's parameter $_query)
receives the return value of the previous function foofunction() call
output 3 shows that variable is in fact NULL
output 5 shows that local var is not accessible
output 6 shows that global var is accessible
output 7 and 8 shows class members ok
output 9 and 10 shows assigning local vars impossible!!!!
H. Don't belive me? TEST IT:
http://66.220.28.17/zero/index.php
Looks like assignment of variables is totally messed up (currupt?)
The script is like dead: I also tried unseting the global
instance of $mydbclass and recreating it, but I get NULL
if I vardump the new instance!!!
Please help me on this one!
//:: CODE EXTRACT FOLLOWS
//:: test function
function foofunction($_bla) {
return "YOUR BLAH: ".$_bla;
}
$fooglobal= "fooglobal";
// function call
$mydbclass->query("select id from user");
//class definition
class mydbclass {
var $version = 1.0
function mydbclass() {
$this->connect(); }
// more class methods ...
function query($_query = "foo", $_fooparam = "bar") {
global $fooglobal;
global $queryix;
$queryix++;
$foolocal = "foolocal";
$this->foonewmember = "foonewmember";
echo "($queryix) _query=";
var_dump($_query);echo BR;
//:: 1 outputs: (2) _query=NULL
if (!($this->tmp = mysql_query($_query))) { ;
$this->tmp2 = $this->bla("select id from zero_user");
echo "_query echo=";
echo($_query);
//::2 outputs: _query echo=YOUR BLAH: bla bla
echo "_query dump=";
var_dump($_query);
//::3 ouputs: _query dump=NULL
echo "_fooparam=";
var_dump($_fooparam);
//::4 ouputs: fooparam=NULL
echo "globalfoo=";
var_dump($fooglobal);
//::5 ouputs: fooglobal=fooglobal
echo "foolocal=";
var_dump($foolocal);
//::6 ouputs: foolocal=NULL
echo "foonewmember=";
var_dump($this->foonewmember);
//::7 ouputs: foonewmember=string(12) "foonewmember"
echo "foooldmember=";
var_dump($this->foooldmember);
//::8 ouputs: foooldmember=string(9) "foooldmember"
echo "result1=";
var_dump($this->result1);
//::9 ouputs: result1=bool(false)
echo "result2=";
var_dump($this->result2);
//::10 ouputs: result2=NULL
}
// more class methods ...
} // end of class
__________________
Thanks,
André Gonçalves
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=22288&edit=1