Re: call-time pass-by-reference feature really deprecated?
| From: | dorgon | Date: | Thu, 19 Jun 2003 17:46:02 +0000 |
| Subject: | Re: call-time pass-by-reference feature really deprecated? | ||
| References: | 1 2 3 4 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-152200@lists.php.net to get a copy of this message | ||
Thanks for the explanation.
Yes, let us drop call-time pass-by-reference!! I'm with you. ;-)
/dorgon
Jason Wong wrote:
On Friday 20 June 2003 01:11, dorgon wrote:Yes, I know there is ;-) The 'maybe' is maybe you have it set different on the two systems.Maybe, there's a setting for this in php.ini.yes. there is:"Call-time pass-by-reference" ============================= function doo($i_may_or_may_not_be_a_reference) {declaration of [runtime function name](). If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file."pass-by-reference" has not been dropped, it is "Call-time pass-by-reference" which is being deprecated.so call-time pass-by-reference is giving parameters as reference to functions, e.g. function returnObjectToAccumulator(&$obj) {...} If this feature is really dropped, how would you implement ConnectionPools for DB-connections for instance, or any classes managing a set of object and providing them by returning references? many OOP design patterns (primarily adopted from java) would not be possible anymore. I think this would be worth talking about. Is there any plausible reason for that decision?$i_may_or_may_not_be_a_reference++;} $i = 1; doo($i); echo $i; // 1 doo(&$i); echo $i; // 2 // here doo() is not defined to have parameters passed by reference. The decision on whether to pass by reference is made at run-time, hence call-time pass-by-reference. It is this behaviour which is being deprecated. So in the newer versions of PHP if call-time pass-by-reference is disabled and you wish to pass parameters by reference you'll have to define your functions accordingly: function doo(&$i_am_passed_by_reference) { ... }