ID:               28189
 Comment by:       bug_php at dpits dot com
 Reported By:      hrvinnie at yahoo dot com
 Status:           Bogus
 Bug Type:         Unknown/Other Function
 Operating System: Debian Kernel 2.2.20-idepci
 PHP Version:      5.0.0RC2
 New Comment:

> This is not a bug, the error message here is totally correct as there
is
> no instance of this class in your script, so you can't access $this
> here.

okay, but in PEAR (pear/Mail/RFC822.php) is following code:

class Mail_RFC822 {
/**
* A variable so that we can tell whether or not we're inside a
* Mail_RFC822 object.
* @var boolean $mailRFC822 */
var $mailRFC822 = true;
function parseAddressList($address = null, $default_domain = null,
$nest_groups = null, $validate = null, $limit = null)
 {
                                                                       
                                    if (!isset($this->mailRFC822)) {
   $obj = new Mail_RFC822($address, $default_domain, $nest_groups,
$validate, $limit);
   return $obj->parseAddressList();
  }
...

here an other script will use this classfunction with
Mail_RFC822::parseAddressList($bla,..).


is this a php bug, because now we could not test whether or not we're
inside a object?


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

[2004-04-29 19:22:58] hrvinnie at yahoo dot com

All, I appreciate your assistance and your contributions to PHP.

ahh!  So the behavior change is that instance functions are treated as
static functions by call_user_func.   
 
IMHO, I believe that such behavior is fundamentally disconnected from
the perpetrated behavior of accepted practices as set out by Zeev's
book and other documentation.
 
However, this lets me move forward with my work.

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

[2004-04-27 23:47:52] [EMAIL PROTECTED]

The behavior that's new in PHP 5 isn't the inability to 
call a method by call name instead of instance. It's 
that if you do so, PHP treats it as a static method 
call. When a static method is invoked in PHP 5, you 
cannot reference $this because it no longer exists and 
was never meaningful in the first place.

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

[2004-04-27 23:15:28] hrvinnie at yahoo dot com

darned the errant cut and paste.  

The previous comment should have begun in a neutral questioning tone of
"So, is this ..." ...

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

[2004-04-27 23:14:07] hrvinnie at yahoo dot com

o then this behavior is new for PHP5?

I ask becuase while the online manual seems slient on invocation by
class name, the examples, behavior of PHP4, and the 3rd Edition (for
PHP5) of Core PHP by Zeev Suraski and Leon Atkinson seem to allow
invocation by class name instead of instance.  

The books Listing 11.78 actually uses a call by class name.  There is
no indication in the eratta this was not the case.

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

[2004-04-27 21:18:21] [EMAIL PROTECTED]

This is not a bug, the error message here is totally correct as there
is no instance of this class in your script, so you can't access $this
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/28189

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

Reply via email to