ID: 20760 Comment by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] Status: Open Bug Type: Documentation problem Operating System: RedHat 8.0 PHP Version: 4.2.2 New Comment:
i once had made the same 'mistake': i had split up a inheritance chain at some place but then i needed a function of the other inheritance trtee after the split. in fact, it worked out fine - so fine that i even didnīt notice that the superclass call was outside the inheritance chain. when i later noticed it i removed it because i got worried if it was desired behaviour or if it could disappear in some later version of php. but if you tell me that i can rely on it i will use it. Previous Comments: ------------------------------------------------------------------------ [2002-12-02 05:17:04] [EMAIL PROTECTED] OK, but mark it in the documentation with a big red callsign. ;-) But what I'm still interested in, is _why_ this is intended. The only reason I can think of is to confuse other programmers, but that would be absurd. ------------------------------------------------------------------------ [2002-12-02 04:29:18] [EMAIL PROTECTED] This is indeed intended behavior, but it should be documented. I have some logs about this, but can not find them now. Derick ------------------------------------------------------------------------ [2002-12-02 04:24:24] [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