Err, Pseudo-oplines, but since I don't exactly know anything about PHP opcodes, I'm just pulling this stuff out of my ass.
CREATE_FUNCTION test
CREATE_FUNCTION zend_anon_0
RET_VAL 0
END_FUNCTION
END_FUNCTION
CALL 'test'
ASSIGN $0, $valuefunction
It looks like you misunderstand how the engine compiles functions. Each function has its own op array. Also, the code you brought is less interesting. More interesting is code such as:
function prefixer($p)
{
$f = function ($name) { return "$p. $name"; }
return $f;
}
$mr = prefixer("Mr");
$mrs = prefixer("Mrs");
echo $mr("Jones");
echo $mrs("Jones");
As you could have guessed, that should result in "Mr. Jones" and "Mrs. Jones" printed. Figuring out where the "Mr." comes from when $mr("Jones") is called would help understand how closure works.
--
Stanislav Malyshev, Zend Products Engineer
stas@zend.com http://www.zend.com/