|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #7454 $this in constructor is different than instaniated object
Submitted: 2000-10-25 12:59 UTC Modified: 2000-12-06 16:47 UTC
From: heathmike at hotmail dot com Assigned:
Status: Closed Package: Class/Object related
PHP Version: 4.0.3 OS: RedHat 6.2
Private report: No CVE-ID: None
 [2000-10-25 12:59 UTC] heathmike at hotmail dot com
Trying to store a reference to $this from inside the constructor does not store the same reference that new class() returns.  The following example shows that.


class foo {
  var $Name;
  function foo($name) {
    Global $List;
    $List[] = &$this;
    $this->Name = $name;
  function echoName() {
    echo "<br>".$this->Name;

$bar1 = new foo('constructor1');
$bar2 = new foo('constructor2');
$bar3 = new foo('constructor3');

$bar1->Name = 'outside1';
$bar2->Name = 'outside2';
$bar3->Name = 'outside3';

// $bar1..3 have been changed as shown below


// $list however contains a copy becuase it's values have not been changed

while (list($key, $val) = each($List)) {


Either a copy is being made when it shouldn't be or I'm doing something wrong.  If I'm doing something wrong I think this should be documented.

Mike Heath


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2000-11-27 07:17 UTC]

 [2000-11-27 14:53 UTC]
simplified and extended testcase

class foo {
	function foo($name) {
    	$GLOBALS['List']= &$this;
    	$this->Name = $name;
		$GLOBALS['List']->echoName(); }

	function echoName() {
    	echo "<br>".$this->Name; } }

function &foo2(&$foo)	{
	return $foo; }

$bar1 = new foo('constructor1');
//$bar1 = foo2(new foo('constructor1'));

$bar1->Name = 'outside1';

echo '<P>';

 [2000-12-06 16:47 UTC]
fixed in latest CVS, but you'll have to use

$bar1 = &new foo('constructor1');
$bar2 = &new foo('constructor2');
$bar3 = &new foo('constructor3');

in these cases instead, please check it out

PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon Jul 15 14:01:28 2024 UTC