Date: 01/16/01
- Next message: derick <email protected>: "[PHP-DEV] PHP 4.0 Bug #8739 Updated: gd"
- Previous message: Andi Gutmans: "RE: [PHP-DEV] Patch that corrects non blocked socket reading on W IN32"
- Next in thread: florian.ortner <email protected>: "[PHP-DEV] PHP 4.0 Bug #8740 Updated: $this can't be passed by reference inside of constructor"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
ID: 8740
Updated by: waldschrott
Reported By: florian.ortner <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] florian.ortner <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] florian.ortner <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."<br>";
}
}
class b
{
var $a; // reference to object of type a
function b(&$a) {
$this->a = &$a;
}
function p() {
echo "b::p ".$this->a->bla."<br>";
}
}
$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 <http://www.php.net/> To unsubscribe, e-mail: php-dev-unsubscribe <email protected> For additional commands, e-mail: php-dev-help <email protected> To contact the list administrators, e-mail: php-list-admin <email protected>
- Next message: derick <email protected>: "[PHP-DEV] PHP 4.0 Bug #8739 Updated: gd"
- Previous message: Andi Gutmans: "RE: [PHP-DEV] Patch that corrects non blocked socket reading on W IN32"
- Next in thread: florian.ortner <email protected>: "[PHP-DEV] PHP 4.0 Bug #8740 Updated: $this can't be passed by reference inside of constructor"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

