[PHP-DEV] PHP 4.0 Bug #8740 Updated: $this can't be passed by reference inside of constructor

2001-01-17 Thread florian . ortner

ID: 8740
User Update by: [EMAIL PROTECTED]
Status: Closed
Bug Type: *General Issues
Description: $this can't be passed by reference inside of constructor

works, but still a bit clumsy.

thanks for the help.

Previous Comments:
---

[2001-01-16 17:53:15] [EMAIL PROTECTED]
you did not quite understand:

1) add a &, like below
it should read, on the global scope:

$a = &new a(10);

2) remove that xtra line
$a->x();


and you'll see that it works

this is due to the fact NEW returns a copy be default


---

[2001-01-16 15:26:12] [EMAIL PROTECTED]
no, that's the opposite of what i wanna get.

$this->b = new b($this); is instancing and assigning a new object of type b to 
$this->b BUT not passing $this by reference to b's constructor.

$foo =& new foobar(); ofcourse doesn't change this behaviour.

---

[2001-01-16 13:15:12] [EMAIL PROTECTED]
try this:

$foo =& new foobar();


---

[2001-01-16 12:55:26] [EMAIL PROTECTED]
just in case, if i change a's constructor to

function a($i) {
$this->bla = $i;
$this->b = new b(&$this); // note the &
}

it doesn't work either.

---

[2001-01-16 12:51:24] [EMAIL PROTECTED]
the following code-snippet illustrated the problem:
-
class a
{
  var $bla; // some intvalue
  var $b; // object of type b

  function a($i) {
$this->bla = $i;
// the next line ain't working in the constructor
//$this->b = new b($this);
  }

  function x() {
// the next line behaves like expected
$this->b = new b($this);
  }

  function p() {
echo "a::p ".$this->bla."";
  }
}

class b
{
  var $a; // reference to object of type a

  function b(&$a) {
$this->a = &$a;
  }

  function p() {
echo "b::p ".$this->a->bla."";
  }
}

$a = new a(10);
$a->x();// works

$a->p();
$a->b->p();

$a->bla = 11;

$a->p();
$a->b->p();
-
output:
a::p 10
b::p 10
a::p 11
b::p 11
-
this is the wanted behaviour. var $a->b contains a object of type b which contains a 
reference back to object $a. object b is instanciated and assigned via the $a->x() 
methodcall. so far, nothing special.

when i want to get rid of the additional method in a (that's the x() method) and 
instanciate b inside of a's constructor and assign it to $a->b with $this, $a->b->a 
doesnt contain a reference to the calling a object but a copy of it.

thus, $this isn't really working inside of an object's constructor.

afaik do other languages have the same limitation of using $this inside of the 
constructor due to address-calculation issues.

---

The remainder of the comments for this report are too long.  To view the rest of the 
comments, please view the bug report online.

Full Bug description available at: http://bugs.php.net/?id=8740


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




[PHP-DEV] PHP 4.0 Bug #8740 Updated: $this can't be passed by reference inside of constructor

2001-01-16 Thread waldschrott

ID: 8740
Updated by: waldschrott
Reported By: [EMAIL PROTECTED]
Old-Status: Open
Status: Closed
Bug Type: *General Issues
Assigned To: 
Comments:

you did not quite understand:

1) add a &, like below
it should read, on the global scope:

$a = &new a(10);

2) remove that xtra line
$a->x();


and you'll see that it works

this is due to the fact NEW returns a copy be default


Previous Comments:
---

[2001-01-16 15:26:12] [EMAIL PROTECTED]
no, that's the opposite of what i wanna get.

$this->b = new b($this); is instancing and assigning a new object of type b to 
$this->b BUT not passing $this by reference to b's constructor.

$foo =& new foobar(); ofcourse doesn't change this behaviour.

---

[2001-01-16 13:15:12] [EMAIL PROTECTED]
try this:

$foo =& new foobar();


---

[2001-01-16 12:55:26] [EMAIL PROTECTED]
just in case, if i change a's constructor to

function a($i) {
$this->bla = $i;
$this->b = new b(&$this); // note the &
}

it doesn't work either.

---

[2001-01-16 12:51:24] [EMAIL PROTECTED]
the following code-snippet illustrated the problem:
-
class a
{
  var $bla; // some intvalue
  var $b; // object of type b

  function a($i) {
$this->bla = $i;
// the next line ain't working in the constructor
//$this->b = new b($this);
  }

  function x() {
// the next line behaves like expected
$this->b = new b($this);
  }

  function p() {
echo "a::p ".$this->bla."";
  }
}

class b
{
  var $a; // reference to object of type a

  function b(&$a) {
$this->a = &$a;
  }

  function p() {
echo "b::p ".$this->a->bla."";
  }
}

$a = new a(10);
$a->x();// works

$a->p();
$a->b->p();

$a->bla = 11;

$a->p();
$a->b->p();
-
output:
a::p 10
b::p 10
a::p 11
b::p 11
-
this is the wanted behaviour. var $a->b contains a object of type b which contains a 
reference back to object $a. object b is instanciated and assigned via the $a->x() 
methodcall. so far, nothing special.

when i want to get rid of the additional method in a (that's the x() method) and 
instanciate b inside of a's constructor and assign it to $a->b with $this, $a->b->a 
doesnt contain a reference to the calling a object but a copy of it.

thus, $this isn't really working inside of an object's constructor.

afaik do other languages have the same limitation of using $this inside of the 
constructor due to address-calculation issues.

---


Full Bug description available at: http://bugs.php.net/?id=8740


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




[PHP-DEV] PHP 4.0 Bug #8740 Updated: $this can't be passed by reference inside of constructor

2001-01-16 Thread florian . ortner

ID: 8740
User Update by: [EMAIL PROTECTED]
Old-Status: Feedback
Status: Open
Bug Type: *General Issues
Description: $this can't be passed by reference inside of constructor

no, that's the opposite of what i wanna get.

$this->b = new b($this); is instancing and assigning a new object of type b to 
$this->b BUT not passing $this by reference to b's constructor.

$foo =& new foobar(); ofcourse doesn't change this behaviour.

Previous Comments:
---

[2001-01-16 13:15:12] [EMAIL PROTECTED]
try this:

$foo =& new foobar();


---

[2001-01-16 12:55:26] [EMAIL PROTECTED]
just in case, if i change a's constructor to

function a($i) {
$this->bla = $i;
$this->b = new b(&$this); // note the &
}

it doesn't work either.

---

[2001-01-16 12:51:24] [EMAIL PROTECTED]
the following code-snippet illustrated the problem:
-
class a
{
  var $bla; // some intvalue
  var $b; // object of type b

  function a($i) {
$this->bla = $i;
// the next line ain't working in the constructor
//$this->b = new b($this);
  }

  function x() {
// the next line behaves like expected
$this->b = new b($this);
  }

  function p() {
echo "a::p ".$this->bla."";
  }
}

class b
{
  var $a; // reference to object of type a

  function b(&$a) {
$this->a = &$a;
  }

  function p() {
echo "b::p ".$this->a->bla."";
  }
}

$a = new a(10);
$a->x();// works

$a->p();
$a->b->p();

$a->bla = 11;

$a->p();
$a->b->p();
-
output:
a::p 10
b::p 10
a::p 11
b::p 11
-
this is the wanted behaviour. var $a->b contains a object of type b which contains a 
reference back to object $a. object b is instanciated and assigned via the $a->x() 
methodcall. so far, nothing special.

when i want to get rid of the additional method in a (that's the x() method) and 
instanciate b inside of a's constructor and assign it to $a->b with $this, $a->b->a 
doesnt contain a reference to the calling a object but a copy of it.

thus, $this isn't really working inside of an object's constructor.

afaik do other languages have the same limitation of using $this inside of the 
constructor due to address-calculation issues.

---


Full Bug description available at: http://bugs.php.net/?id=8740


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




[PHP-DEV] PHP 4.0 Bug #8740 Updated: $this can't be passed by reference inside of constructor

2001-01-16 Thread waldschrott

ID: 8740
Updated by: waldschrott
Reported By: [EMAIL PROTECTED]
Old-Status: Open
Status: Feedback
Bug Type: *General Issues
Assigned To: 
Comments:

try this:

$foo =& new foobar();


Previous Comments:
---

[2001-01-16 12:55:26] [EMAIL PROTECTED]
just in case, if i change a's constructor to

function a($i) {
$this->bla = $i;
$this->b = new b(&$this); // note the &
}

it doesn't work either.

---

[2001-01-16 12:51:24] [EMAIL PROTECTED]
the following code-snippet illustrated the problem:
-
class a
{
  var $bla; // some intvalue
  var $b; // object of type b

  function a($i) {
$this->bla = $i;
// the next line ain't working in the constructor
//$this->b = new b($this);
  }

  function x() {
// the next line behaves like expected
$this->b = new b($this);
  }

  function p() {
echo "a::p ".$this->bla."";
  }
}

class b
{
  var $a; // reference to object of type a

  function b(&$a) {
$this->a = &$a;
  }

  function p() {
echo "b::p ".$this->a->bla."";
  }
}

$a = new a(10);
$a->x();// works

$a->p();
$a->b->p();

$a->bla = 11;

$a->p();
$a->b->p();
-
output:
a::p 10
b::p 10
a::p 11
b::p 11
-
this is the wanted behaviour. var $a->b contains a object of type b which contains a 
reference back to object $a. object b is instanciated and assigned via the $a->x() 
methodcall. so far, nothing special.

when i want to get rid of the additional method in a (that's the x() method) and 
instanciate b inside of a's constructor and assign it to $a->b with $this, $a->b->a 
doesnt contain a reference to the calling a object but a copy of it.

thus, $this isn't really working inside of an object's constructor.

afaik do other languages have the same limitation of using $this inside of the 
constructor due to address-calculation issues.

---


Full Bug description available at: http://bugs.php.net/?id=8740


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]




[PHP-DEV] PHP 4.0 Bug #8740 Updated: $this can't be passed by reference inside of constructor

2001-01-16 Thread florian . ortner

ID: 8740
User Update by: [EMAIL PROTECTED]
Status: Open
Bug Type: *General Issues
Description: $this can't be passed by reference inside of constructor

just in case, if i change a's constructor to

function a($i) {
$this->bla = $i;
$this->b = new b(&$this); // note the &
}

it doesn't work either.

Previous Comments:
---

[2001-01-16 12:51:24] [EMAIL PROTECTED]
the following code-snippet illustrated the problem:
-
class a
{
  var $bla; // some intvalue
  var $b; // object of type b

  function a($i) {
$this->bla = $i;
// the next line ain't working in the constructor
//$this->b = new b($this);
  }

  function x() {
// the next line behaves like expected
$this->b = new b($this);
  }

  function p() {
echo "a::p ".$this->bla."";
  }
}

class b
{
  var $a; // reference to object of type a

  function b(&$a) {
$this->a = &$a;
  }

  function p() {
echo "b::p ".$this->a->bla."";
  }
}

$a = new a(10);
$a->x();// works

$a->p();
$a->b->p();

$a->bla = 11;

$a->p();
$a->b->p();
-
output:
a::p 10
b::p 10
a::p 11
b::p 11
-
this is the wanted behaviour. var $a->b contains a object of type b which contains a 
reference back to object $a. object b is instanciated and assigned via the $a->x() 
methodcall. so far, nothing special.

when i want to get rid of the additional method in a (that's the x() method) and 
instanciate b inside of a's constructor and assign it to $a->b with $this, $a->b->a 
doesnt contain a reference to the calling a object but a copy of it.

thus, $this isn't really working inside of an object's constructor.

afaik do other languages have the same limitation of using $this inside of the 
constructor due to address-calculation issues.

---


Full Bug description available at: http://bugs.php.net/?id=8740


-- 
PHP Development Mailing List 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]