#21845 [Opn->Ver]: $this in static calls

From: Date: Sat, 08 Mar 2003 15:14:09 +0000
Subject: #21845 [Opn->Ver]: $this in static calls
References: 1  Groups: php.pear.dev 
Request: Send a blank email to pear-dev+get-14159@lists.php.net to get a copy of this message
ID: 21845 Updated by: alan_k@php.net Reported By: cynic@php.net -Status: Open +Status: Verified Bug Type: PEAR related Operating System: FreeBSD-4.7 STABLE PHP Version: 4.3.0 New Comment: I think Andi confirmed this behaviour will disappear in PHP5 (the $this transfer on static methods), Probably worth emailing Stig or pear-dev to confirm that nobody has a problem with this (patch looks ok to me) Previous Comments: ------------------------------------------------------------------------ [2003-01-23 10:27:30] cynic@php.net I'm sure I've seen this discussed on php-dev@, but cannot find it for the life of me, nor do I recall the conclusion. class foo { function bar () { baz::quux(); } } class baz { function quux() { printf('$this is %s set', isset($this)?'':'not') } } PEAR_Error::throwError() suffers from this bug. two alternate patches: Index: pear/PEAR.php =================================================================== RCS file: /repository/php4/pear/PEAR.php,v retrieving revision 1.53 diff -u -u -r1.53 PEAR.php --- pear/PEAR.php 21 Jan 2003 13:32:34 -0000 1.53 +++ pear/PEAR.php 23 Jan 2003 16:20:52 -0000 @@ -528,7 +528,7 @@ $code = null, $userinfo = null) { - if (isset($this)) { + if (isset($this) && is_subclass_of($this, 'PEAR_Error')) { return $this->raiseError($message, $code, null, null, $userinfo); } else { return PEAR::raiseError($message, $code, null, null, $userinfo); Index: pear/PEAR.php =================================================================== RCS file: /repository/php4/pear/PEAR.php,v retrieving revision 1.53 diff -u -u -r1.53 PEAR.php --- pear/PEAR.php 21 Jan 2003 13:32:34 -0000 1.53 +++ pear/PEAR.php 23 Jan 2003 16:20:34 -0000 @@ -528,7 +528,7 @@ $code = null, $userinfo = null) { - if (isset($this)) { + if (isset($this) && method_exists($this, 'raiseError')) { return $this->raiseError($message, $code, null, null, $userinfo); } else { return PEAR::raiseError($message, $code, null, null, $userinfo); ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=21845&edit=1

« previous php.pear.dev (#14159) next »