[PHP-DOC] #20760 [Opn]: strange behaviour regarding $this From: derick <email protected>
Date: 12/02/02

 ID: 20760
 Updated by: derick <email protected>
 Reported By: krennmair <email protected>
 Status: Open
-Bug Type: Zend Engine 2 problem
+Bug Type: Documentation problem
 Operating System: RedHat 8.0
 PHP Version: 4.2.2
 New Comment:

This is indeed intended behavior, but it should be documented. I have
some logs about this, but can not find them now.

Derick

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

[2002-12-02 04:24:24] krennmair <email protected>

We have found a strange behaviour regarding $this. One of our
programmers made a mistake during programming, which led to
"Heisenbugs", which were not quite easy to find and fix. We could
reduce the problem to a simple program to present it:

<?

class Foo {

  var $bla;

  function quux() {
    $this->bla = 5;
  }

}

class Bar {

  var $bla;

  function do_stuff() {
    $this->bla = 10;
    Foo::quux();
    echo $this->bla;
  }
}

$blabla = new Bar;

$blabla->do_stuff();

?>

The output is: "5"

Obviously, Bar::do_stuff() is not allowed to call Foo::quux() since
Foo::quux() is using $this. Now the strange thing comes: instead of
casting an error, PHP happily accepts the code. But the $this in
Foo::quux is the same $this as in Bar::do_stuff(), i.e. $blabla, and
that's why the output is 5. Is this behaviour intended? At least I
couldn't find it documented anywhere. IMO the user should be warned
when $this is used in a static function.

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

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

-- PHP Documentation Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php