我有一个如何调用变量的问题。
在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
但是,如果是全局的,则全局表示整个脚本不在类中。
非常感谢你的建议。
答案 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();