这是我的代码:
class Manual extends controller {
function Manual(){
parent::Controller();
$myVar = 'blablabla';
}
function doStuff(){
echo $myVar; // Doesn't work.
}
}
我已经尝试了各种方法来使它工作,但我无法理解它。我该怎么办?
由于
答案 0 :(得分:8)
在您的代码中,$myVar
是每种方法的本地。
也许你的意思是$this->myVar?
答案 1 :(得分:4)
你需要使用$ this'指针'。
e.g:
class Test
{
protected $var;
public function __construct()
{
$this->var = 'foobar';
}
public function getVar()
{
return $this->var;
}
};
答案 2 :(得分:4)
class Manual extends controller {
private $myVar;
function Manual(){
parent::Controller();
$this->$myVar = 'blablabla';
}
function doStuff(){
echo $this->$myVar;
}
}
使用Setters / Getters更像OOP
class Manual extends controller {
private $myVar;
function Manual(){
parent::Controller();
setMyVar('blablabla');
}
function doStuff(){
echo getMyVar();
}
function getMyVar() {
return $this->myVar;
}
function setMyVar($var) {
$this->myVar = $var;
}
答案 3 :(得分:2)
function doStuff(){
echo $this->myVar;
}
答案 4 :(得分:2)
变量$myVar
应该是 属性 ,你不能这样做:
echo $myVar;
你应该这样做:
$this->myVar;
答案 5 :(得分:1)
如上所述,$ myVar对两种方法都是本地的。
您需要将$ myVar声明为类主体中的属性
protected $myVar;
然后使用伪变量$ this来访问方法中的属性,包括构造函数
$this->myVar;
答案 6 :(得分:1)
$myVar
字段必须在父类中声明为public/protected
或在后代类中声明,并且在您的doStuff()
方法中,您必须编写$this->myVar
而不是$myVar
1}}