Hello Again: Pardon the followup to myself...
On Fri, Nov 14, 2003 at 05:51:12PM -0500, Daniel Convissor wrote: > Though, it seems the behavior should be consistent -- sometimes I'm too > logical :) -- so returning a variable is okay and the rest of it should be > blocked, OR rework the system so anything can be returend. I did some more testing on this front and ran into some VERY weird behavior which seems to reinforce the point I made above. The test script is below by sig. Thanks, --Dan -- FREE scripts that make web and database programming easier http://www.analysisandsolutions.com/software/ T H E A N A L Y S I S A N D S O L U T I O N S C O M P A N Y 4015 7th Ave #4AJ, Brooklyn NY v: 718-854-0335 f: 718-854-0409 <?php /* * Is this an example of memory corruption due to attempting to * return by reference on non-variables? * * BASE OUTPUT: * Ref 1 * RefAdd st 10-21-03 06:01 et * * BUT, the output changes dramatically depending on which lines * are commented and uncommented. Read the block comments below * for more information. * * PLATFORM: * Windows 2000 * PHP 5.0.0b3-dev (cgi-fcgi) (built: Nov 11 2003 16:10:23) * Apache 1.3.28 */ class x { var $int = 1; function x() { $this->Data['DATETIME'] = 'st 10-21-03 06:01 et'; /* * Commenting out next three lines changes output to: * Ref 1 * Fatal error: Cannot return overloaded elements or * string offsets by reference... line 43. */ if ( preg_match('/st (\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d) et/i', $this->Data['DATETIME'], $Atom) ) { } } function &Ref() { return $this->int; } function &RefAdd() { return ++$this->int; // Line 43 } function Not() { return $this->int; } } $y = new x; /* * Uncommenting the next two lines changes the output to: * Fatal error: Only variables or references can be returned * by reference... line 43 */ // $a =& $y->RefAdd(); // echo "<br />RefAdd $a"; $b =& $y->Ref(); echo "<br />Ref $b"; /* * Uncommenting the next two lines changes the output to: * Ref 1 * Not 1 * RefAdd 2 */ // $c = $y->Not(); // echo "<br />Not $c"; $d =& $y->RefAdd(); echo "<br />RefAdd $d"; ?> -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php