0

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

在 Js 中,如果我写$A = $this->Ainside of B(),我可以$this->A通过$Ainside of 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 从外部获取变量,在 PHP 中的函数内部

但是,如果是全局的,这里的全局是指不在类中的整个脚本。

非常感谢您的建议。

4

2 回答 2

1

你不能在函数中定义函数,避免它,这很糟糕!该功能将不受范围限制。函数总是全局的。

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

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

于 2013-01-23T08:17:29.817 回答
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();
于 2013-01-23T08:25:35.453 回答