猿问

无法访问函数内部的全局变量 INSIDE public function PHP

再会。我正在尝试执行一个函数。我声明一个全局变量来获取函数外部的数据(变量),并将该函数放入类的公共函数内。


class Test {

    public function execute(){

        $data = "Apple";

        

        function sayHello() {

            global $data;

            

            echo "DATA => ". $data;

        

        }

        

        sayHello();

    }


}


$test = new Test;

$test->execute();

预期结果:


DATA => Apple

真实结果:


DATA =>

全局变量没有获取函数外部的变量。为什么会发生这样的事?感谢您的帮助。


慕的地8271018
浏览 100回答 1
1回答

摇曳的蔷薇

$data不是全局变量。它在另一个函数内,在一个类内。全局变量位于任何函数或类之外。但无论如何,您的用例是不寻常的 - 很少需要像您所做的那样嵌套函数。这些函数的更传统、更逻辑、更可用的实现可能如下所示:class Test {    public function execute(){        $data = "Apple";        $this->sayHello($data);    }    private function sayHello($data) {        echo "DATA => ". $data;    }}$test = new Test;$test->execute();工作演示:http://sandbox.onlinephpfunctions.com/code/e91b98bb15fcfa71b1c6cbbc305b5a93df678e8b(这只是一种选择,但它是一个合理的选择,尽管由于这显然是一个简化的抽象示例,因此很难确定您的真实场景实际上需要什么或最适合什么。)
随时随地看视频慕课网APP
我要回答