PHP で クロージャ失敗

http://d.hatena.ne.jp/am11op/20070702/1183376369
↑前エントリのクロージャもどきがものすごく使いたくならない理由がわかった。

function closure($str) {
	$str = ereg_replace("^function\(\) *\{", "", $str);
	$str = ereg_replace("\}$", "", $str);


	$func =create_function('', $str);
	$func();
}

class Test{
	function sayTest(){
		echo 'test';
	}
}
$obj = new Test;

function piyo($bool, $obj='') {
	if ($bool) {
		closure($obj['onSuccess']);
	} else {
		closure($obj['onFailure']);
	}
}

$arr1 = array(
		'onSuccess'=>'echo "OK!";',
		'onFailure'=>'echo "NG!";',
);

echo piyo(true, $arr1);	// OK!
echo piyo(false, $arr1);	// NG!

$arr2 = array(
		'onSuccess'=>'function(){echo $obj->sayTest();}', // この時点で syntax error
);

echo piyo(true, $arr2);

class とか instance 使った時点で閉じた空間じゃなくなるので、
こういうものはいくらそれっぽく作っても、
結局 closure とは呼べないだろうと思った。

結論
失敗例を増やしただけ