Re: PHP6 return by reference deprecation

From: Date: Sat, 02 May 2009 20:20:24 +0000
Subject: Re: PHP6 return by reference deprecation
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-292222@lists.php.net to get a copy of this message
'Twas brillig, and Larry Garfield at 02/05/09 20:00 did gyre and gimble:
On Saturday 02 May 2009 9:30:09 am Colin Guthrie wrote:
'Twas brillig, and Paul M Foster at 02/05/09 06:07 did gyre and gimble:
If this is going away, how do you return things by reference, so as to ensure a single copy of something (yes, I know the singleton pattern can be used; I do use it as well; it's more complicated)?
You'll want to use the Singleton design pattern here. Let's say you're config object is a class.
That's well and good if the thing you want a single copy of is an object. The way objects pass in PHP 5 makes singletons easy. But I actually just developed a system for PHP 5.2 that includes a class that deliberately allows a caller to reach in and grab an internal array-based data structure for special cases. class Foo { protected $internalConfig = array(...); public function &getConfig() {
    return $this->internalConfig;
} } $foo = new Foo(); ... $config = &$foo->getConfig(); // Do stuff to $config that wouldn't make sense to do via methods. So do I understand the OP correctly that is going to break with PHP 6 now? I certainly hope not, as that would be incredibly short sighted and stupid. There are plenty of use cases for returning by reference besides making PHP 4 objects behave correctly.
Use ArrayObject rather than just array. e.g. class Foo { protected $internalConfig; public function __construct() {
    $this->internalConfig = new ArrayObject(...);
} public function getConfig() {
    return $this->internalConfig;
} } http://www.php.net/manual/en/class.arrayobject.php Col -- Colin Guthrie gmane(at)colin.guthr.ie http://colin.guthr.ie/ Day Job: Tribalogic Limited [http://www.tribalogic.net/] Open Source: Mandriva Linux Contributor [http://www.mandriva.com/] PulseAudio Hacker [http://www.pulseaudio.org/] Trac Hacker [http://trac.edgewall.org/]

« previous php.general (#292222) next »