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:

Maybe, there's a setting for this in php.ini.

yes. there is:


Yes, I know there is ;-) The 'maybe' is maybe you have it set different on the two systems.


>>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?


"Call-time pass-by-reference"
=============================
  function doo($i_may_or_may_not_be_a_reference) {
    $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) { ... }



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Reply via email to