当变量在子函数中时是否要执行声明变量?
就像这个例子一样:
function cobasaja(){
global $coba;
return $coba;
}
function ditampilkan(){
global $coba;
$coba = "content trying...";
return cobasaja();
}
echo "View: ".ditampilkan();
为什么不能这样:
function cobasaja(){
global $coba;
return $coba;
}
function ditampilkan(){
//global $coba; <= not declare in viewer function
$coba = "content trying...";
return cobasaja();
}
echo "View: ".ditampilkan();
但是第二个实验没有用。
因为我记得,通常第二种方式可以完成,但现在我不能这样做,这是因为它的PHP版本还是PHP.ini中的设置?
答案 0 :(得分:1)
添加功能会创建新的scope。您希望在函数中使用的任何变量都需要在该范围内定义,从外部作用域引入global
,或作为参数传入。据我所知,这个一般概念在PHP版本上没有太大变化,因此我不相信你的第二个实验可以在早期的PHP版本中运行,或者可以通过更改配置设置来实现。
如果你的函数在同一个类中,你可以使用对象属性而不是全局变量来实现你想要的东西。
class Example {
private $coba = '';
protected function cobasaja() {
return $this->coba;
}
public function ditampilkan() {
$this->coba = "content trying...";
return $this->cobasaja();
}
}