ID:               22367
 User updated by:  stanislav dot chachkov at epfl dot ch
 Reported By:      stanislav dot chachkov at epfl dot ch
 Status:           Verified
 Bug Type:         Scripting Engine problem
 Operating System: Solaris8
 PHP Version:      4.3.2-dev
 New Comment:

We found a workaround: getColumnValue functions should both return a
reference or both return a value. 
Actually it is also possible to return a reference from class A and
value from sub class B, but the inverse breaks the stack.


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

[2003-02-24 01:44:27] stanislav dot chachkov at epfl dot ch

1) This code works fine with previous version (4.2.2)
2) What exactly in this code is 'weird'/'irrealistic'?
I'm ready to explain you how does it works, or else you can ask any
people who deals with object orientation at php
3) It is really a problem for me, because i have a broken web site just
because i did an update from v4.2.2 to v4.3.2 to use GD image lib. 

Best regards.

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

[2003-02-23 18:01:01] [EMAIL PROTECTED]

I do get similar results plus some leaks with your
example..but your example is quite weird code which
really shouldn't work anyway. :)

And btw. undefined variables have 'value' of NULL..
(unset($var) is same as doing $var = NULL;)

Testing whether a variable exists should always be done
with 'isset()'.

Leaving as verified but I'm not sure if this will ever get
'fixed'. (try come up with some more realistic example?)


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

[2003-02-23 13:16:25] stanislav dot chachkov at epfl dot ch

This is the test case:

<?
class A{
  var $fields;
  
  function getID(){
    return $this->getColumnValue($this->getPK());
  }
  
  function getColumnValue($col_name){
    return $this->fields[$col_name];
  }
  
 
  function save(){
    $this->getID();
    $i=333;
    echo "Dump of z: ";
    var_dump($z);
    echo "<br>z=";
    echo $z;
    echo "<br>";
    if($boo){
      echo "undefined is now defined<br>";
    }else{
      echo "undefined is undefined<br>";
    }
    
    $s1="YES";
    $s2="NO";
    
    echo "s1=$s1, s2=$s2";
  }
}


class B extends A{
  function getPK(){
    return "ID";
  }
  
  function &getColumnValue($col_name){
    return parent::getColumnValue($col_name);
  }
}


$b=new B();
if(!$b->getID()){}
$b->save();

?>

The output that we have is:

Dump of z: NULL
z=333
undefined is now defined
s1=NO, s2=NO

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

[2003-02-23 11:56:04] stanislav dot chachkov at epfl dot ch

Exactly the same behaviour with php 4.3.2-dev
We will try to write a simple test case

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

[2003-02-23 01:26:27] [EMAIL PROTECTED]

Please try using this CVS snapshot:

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


It might have been fixed. If not, then put that long
example somewhere to be downloaded and add the url here.


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

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/22367

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

Reply via email to