PHP从函数内部调用外部函数变量

时间:2013-01-23 08:13:36

标签: php function variables

我有一个如何调用变量的问题。

在Js中,如果我在$A = $this->A内写B(),我可以在$this->A$A到达C();但在PHP中似乎这种方式不起作用。

请建议一种方法,可以在没有给出函数变量的情况下读取C()内部的$ this-A。

class X {

    function B(){
        function C(){
           $this->A;  // Can not call A here
           $A; // No work either

        }
        $A = $this->A; // 

        $this->A; // Can call A here
    }

    private $A;
}

这里的Global $A Get variables from the outside, inside a function in PHP

但是,如果是全局的,则全局表示整个脚本不在类中。

非常感谢你的建议。

2 个答案:

答案 0 :(得分:2)

你不能在函数中定义函数,避免它,它是坏的!该功能不限于范围。功能永远是全球性的。

虽然它可以在第一次运行时工作,但是这样的代码的执行只会定义函数(之前的调用将不可用),并且在下一次调用时将崩溃并出现“重新定义的函数错误”。

知道这一点,你的代码所做的是定义一个实际位于类之外的全局函数“C”,因此无法访问私有属性。

答案 1 :(得分:1)

正如Sven所说,函数中的函数很糟糕,但忽略了你也可以这样做,以便在函数内公开非函数范围变量

class X {

    function B(){
        $A = $this->A; //
        function C(){
           global $A; // No work either
        }
        $this->A; // Can call A here
    }

    private $A;
}

评论编辑:

class X { 

    public $inputvar; 
    public $outputvar; 

    public function B($changeinput) { 
        $this->inputvar = $changeinput; 
    } 

    public function C($secondinput) { 
        $this->outputvar = $this->inputvar." == ".$secondinput; 
    } 

    public function return_var() { 
        return $this->outputvar; 
    }
}

$testclass = new X(); 

$testclass->B("test input"); 
$testclass->C("second input"); 
$testclass->inputvar = "BLAAH"; 

echo $testclass->return_var();