Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:13138 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 24748 invoked by uid 1010); 4 Oct 2004 14:39:16 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 24723 invoked from network); 4 Oct 2004 14:39:16 -0000 Received: from unknown (HELO mail.a-s-i.com) (208.42.143.194) by pb1.pair.com with SMTP; 4 Oct 2004 14:39:16 -0000 Received: from romulus.a-s-i.com (localhost [127.0.0.1]) by mail.a-s-i.com (8.12.11/8.12.11) with ESMTP id i94EdGZ9019871 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 4 Oct 2004 09:39:16 -0500 Received: (from glamm@localhost) by romulus.a-s-i.com (8.12.11/8.12.11/Submit) id i94EdGhB019870 for internals@lists.php.net; Mon, 4 Oct 2004 09:39:16 -0500 X-Authentication-Warning: romulus.a-s-i.com: glamm set sender to glamm@a-s-i.com using -f Date: Mon, 4 Oct 2004 09:39:16 -0500 To: internals@lists.php.net Message-ID: <20041004143916.GA19506@romulus.a-s-i.com> Mail-Followup-To: Bob Glamm , internals@lists.php.net Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.1i Subject: Odd reference => global bug? From: glamm@a-s-i.com (Bob Glamm) I saw this behavior this morning and was curious if I'd tripped a bug in PHP (running version 4.3.7 at the moment). I scanned through the bug list for this particular bug but didn't find it. I'm running it by you all because I'm not intimately familiar with the reference system to really be sure that it's a bug and not just my misunderstanding. A demonstration script is included below: globals $x and $v are set to NULL. q() is called and references globals $x and $v. $x is set to the new class X; $v is set to a reference to a new class Y (by means of a factory function in X, a common structure in PEAR). My version of PHP prints NULL at the var_dump() statement immediately following the call to q(); I would expect it to dump an instance of class Y. So: am I misunderstanding references (and if so, why is the behavior what it is), is this a duplicate of another known bug, is this bug fixed in a newer version of PHP, or should I file a new bug? -Bob a = $t; } } class X { function X() { } function &getY($t) // factory method to create Y and return a ref to it { $k = new Y($t); return($k); } } $x = null; $v = null; function q() { global $x, $v; $x = new X(); // get an X simply to acquire a Y $v =& $x->getY("here"); // use the factory in X to assign a ref // to Y to the global $v } q(); // initialize the globals with X and &Y var_dump($v); // should dump a Y, instead prints NULL ? ?>