我有这样的课程
Class something{
public $token;
public function nameA()
{
$this->token = 'value';
}
public function nameB(){
echo $this->token;
}
}
$ok = new something();
$ok->nameB();

为什么我在使用$ ok-> nameB();?
时什么也得不到答案 0 :(得分:4)
如果您要在类中使用自然构造函数方法,那么您的代码就可以了
Class something{
public $token;
public function __construct()
{
$this->token = 'value';
}
public function nameB(){
echo $this->token;
}
}
$ok = new something();
$ok->nameB();
答案 1 :(得分:1)
您必须先调用nameA()
来分配值,此处令牌为空。
答案 2 :(得分:1)
属性$token
在给定值之前为空。
在你的课堂上,唯一可能发生的方法是调用nameA
方法,或直接操作属性,所以你需要先做:
Class something{
public $token;
public function nameA()
{
$this->token = 'value';
}
public function nameB(){
echo $this->token;
}
}
$ok = new something();
$ok->nameA(); //<--sets property
//or direct manipulation: $ok->token = 'blah';
$ok->nameB(); //<-- reads and outputs it
另一种方法是在构造函数中设置属性:
Class something{
public $token;
public function __construct()
{
$this->token = 'value';
}
public function nameB(){
echo $this->token;
}
}
$ok = new something(); //<-- sets propery
$ok->nameB(); //<--reads and outputs it
或者您可以使用值初始化该属性:
Class something{
public $token = 'default';
public function nameA()
{
$this->token = 'value';
}
public function nameB(){
echo $this->token;
}
}
$ok = new something();
$ok->nameB(); //outputs 'default'
$ok->nameA(); //sets to 'value'
$ok->nameB(); //outputs 'value'