子函数中的全局变量无需声明

时间:2017-11-30 15:06:42

标签: php

当变量在子函数中时是否要执行声明变量?

就像这个例子一样:

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中的设置?

1 个答案:

答案 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();
    }
}