function a(){ echo 'a'; function b(){ echo 'b'; function c(){ echo 'c'; } c(); } //c(); b(); } a();
class Demo{
public function a(){ echo 'demo_a'; function bb(){ echo "demo_b"; function cc(){ echo "demo_c"; } cc(); } bb(); } } $demo = new Demo(); $demo->a(); abcdemo_ademo_bdemo_c
function a(){
echo 'a';
function b(){
echo 'b';
function c(){
echo 'c';
}
c();
}
//c();
b();
}
a();
class Demo{
public function a(){
echo 'demo_a';
function bb(){
echo "demo_b";
function cc(){
echo "demo_c";
}
cc();
}
bb();
}
}
$demo = new Demo();
$demo->a();
abcdemo_ademo_bdemo_c
形如 function(){} 的才是闭包你的代码是在函数里定义函数,虽然符合语法规则,但后患无穷这才是闭包
$c = function() {
echo 'c';
}
$c();
你这个只是在函数内定义了函数。函数必须先定义才可以使用。因此把
10,11行交换一下顺序就可以了。function a(){
echo 'a';
function b(){
echo 'b';
function c(){
echo 'c';
}
c();
}
b();
c();
}
a();class Demo{ public function a(){
echo 'demo_a';
function bb(){
echo "demo_b";
function cc(){
echo "demo_c";
}
cc();
}
bb();
}
}
$demo = new Demo();
$demo->a();
abccdemo_ademo_bdemo_c