Edit report at https://bugs.php.net/bug.php?id=53765&edit=1

 ID:          53765
 Updated by:  [email protected]
 Reported by: jon dot skarpeteig at gmail dot com
 Summary:     $this variable doesn't get set using static reference
-Status:      Feedback
+Status:      No Feedback
 Type:        Bug
 Package:     Scripting Engine problem
 PHP Version: 5.3.5

 New Comment:

No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.


Previous Comments:
------------------------------------------------------------------------
[2011-01-17 18:23:28] [email protected]

I can't reproduce with this:

<?php
abstract class singleton {
        protected static $instance = null;
        final public static function getInstance() {
                if(null !== static::$instance)
                        return static::$instance;
                static::$instance = new static();
                return static::$instance;
        }
}
class myclass extends singleton {
        protected $var='foo';
        public function bar() { echo $this->var; }
}
$myclass = myclass::getInstance();
$myclass->bar();

echoes "foo". Is this the correct script?

------------------------------------------------------------------------
[2011-01-17 11:56:06] jon dot skarpeteig at gmail dot com

* correction:

abstract class singleton
{
protected static $instance = null;
final public static function getInstance()
        {
                if(null !== static::$instance){
                        return static::$instance;
                }
                static::$instance = new static();
                return static::$instance;
        }
}

and:

var_dump($this); - not echo

------------------------------------------------------------------------
[2011-01-17 11:51:16] jon dot skarpeteig at gmail dot com

Description:
------------
The test script output: 

Notice: Undefined variable: this

Instead $this is referenced as $instance

Attempting to do $this = $instance; returns:

Fatal error: Cannot re-assign $this

Test script:
---------------
abstract class singleton
{
final public static function getInstance()
        {
                if(null !== static::$instance){
                        return static::$instance;
                }
                static::$instance = new static();
                return static::$instance;
        }
}

class myclass extends singleton
{
protected $var='foo';
public function bar()
{
echo $this->var;
}
}

$myclass = myclass::getInstance();
$myclass->bar();

Expected result:
----------------
I expected $this to hold the same value as $instance

Actual result:
--------------
Notice: Undefined variable: this


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



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

Reply via email to