PHP crashing without an error message?!

Miscellaneous Forums/General Discussion/PHP crashing without an error message?!

Edit again:
Alright, it's fixed! It's finally fixed!
I don't know how it's been fixed, but it's good enough for me.
Feels like I should get a prize or something, but all I've done is fix a tiny little bug :(
Damnit, why do all these things have to boil down to single lines of code?!

Anyway... err, Charlotte CMS. Use it because it has a cooler name than PHP-Nuke. (And it creates puzzles that could confound even the world's greatest minds! ... probably).

Original confusion:

Aha! (More nonsense!)
Here is the epitome of my bug.

This is the overloaded __get function used in Page for what was supposed to be an easy way to retrieve values but has at this point turned into "why the hell did you do that?!":
function __get($key, &$value)
		{
			//echo('__GET '.$key);
			if ( isset($this->data[$key]) )
			{
				$value = $this->data[$key];
				return true;
			}elseif ( isset($GLOBALS['def_varsList'][$key]) )
			{
				echo('Getting value for '.$key.' from defaults="'.$GLOBALS['def_varsList'][$key].'"');
				$value = $GLOBALS['def_varsList'][$key];
				return true;
			}else
			{
				//echo('['.$key.'Does not exist!]');
				return false;
			}
		}

If I uncomment echo('['.$key.'Does not exist!]'); near the end of that function, PHP outputs the whole page without any error (though I have huge amounts of debug text and some graphics which I haven't uploaded yet).
This makes no sense!. Echoing should have no impact - especially not a positive impact! The __get function merely sets $value to the output or says a variable does not exist.
Can't really file a bug, since PHP here is out of date. I guess I have a decent question for the support folks now, though, and a better description of this bug.

However, if I uncomment echo('__GET '.$key);, then it breaks echoing the Summary of the Volunteer section (from retrieving the Path variable, which is not stored within the $data array but PHP should get automatically).


Edit:
Okay, I have whittled this down a bit further. If I replace echo('['.$key.'Does not exist!]'); with $value=$key; or anything else that involves retrieving the value of $key at that point in the function, it works.
This does not explain why retrieving the value of $key earlier (at the top of the function) breaks it, or, for that matter, why this needs to be done at all (or what retrieving the value of a local variable has to do with the eventual output! ...Is the function overloading itself?).