|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-01-23 10:27 UTC] 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);
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 02:00:01 2025 UTC |
There are a few other functions that need a similar patch. If it looks good, I'm happy to commit this patch. Greg Index: pear/PEAR.php =================================================================== RCS file: /repository/php-src/pear/PEAR.php,v retrieving revision 1.65 diff -u -r1.65 PEAR.php --- pear/PEAR.php 10 Jul 2003 11:35:37 -0000 1.65 +++ pear/PEAR.php 31 Jul 2003 20:25:56 -0000 @@ -289,7 +289,8 @@ function setErrorHandling($mode = null, $options = null) { - if (isset($this)) { + if (isset($this) && + (get_class($this) == 'pear' || is_subclass_of($this, 'pear'))) { $setmode = &$this->_default_error_mode; $setoptions = &$this->_default_error_options; } else { @@ -566,7 +567,8 @@ function pushErrorHandling($mode, $options = null) { $stack = &$GLOBALS['_PEAR_error_handler_stack']; - if (isset($this)) { + if (isset($this) && + (get_class($this) == 'pear' || is_subclass_of($this, 'pear'))) { $def_mode = &$this->_default_error_mode; $def_options = &$this->_default_error_options; } else { @@ -575,7 +577,8 @@ } $stack[] = array($def_mode, $def_options); - if (isset($this)) { + if (isset($this) && + (get_class($this) == 'pear' || is_subclass_of($this, 'pear'))) { $this->setErrorHandling($mode, $options); } else { PEAR::setErrorHandling($mode, $options); @@ -600,7 +603,8 @@ array_pop($stack); list($mode, $options) = $stack[sizeof($stack) - 1]; array_pop($stack); - if (isset($this)) { + if (isset($this) && + (get_class($this) == 'pear' || is_subclass_of($this, 'pear'))) { $this->setErrorHandling($mode, $options); } else { PEAR::setErrorHandling($mode, $options);