Php Can';t在类中使用$this赋值

Php Can';t在类中使用$this赋值,php,class,Php,Class,我有这样的课 分类{ 公众$token; 公共函数名称a() { $this->token='value'; } 公共函数名称b(){ echo$this->token; } } $ok=新事物(); $ok->nameB()在赋值之前必须调用nameA(),这里的标记为空。在赋值之前必须调用nameA(),这里的标记为空。如果要在类中使用自然构造函数方法,那么代码就可以了 Class something{ public $token; public function __c

我有这样的课

分类{
公众$token;
公共函数名称a()
{
$this->token='value';
}
公共函数名称b(){
echo$this->token;
}
}
$ok=新事物();

$ok->nameB()
在赋值之前必须调用
nameA()
,这里的标记为空。

在赋值之前必须调用
nameA()
,这里的标记为空。

如果要在类中使用自然构造函数方法,那么代码就可以了

Class something{
    public $token;

    public function __construct()
    {
        $this->token = 'value';
    }
    public function nameB(){
        echo $this->token;
    }
}

$ok = new something();
$ok->nameB();

如果在类中使用自然构造函数方法,那么代码就可以了

Class something{
    public $token;

    public function __construct()
    {
        $this->token = 'value';
    }
    public function nameB(){
        echo $this->token;
    }
}

$ok = new something();
$ok->nameB();

属性
$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

属性
$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

因为
新事物()
不会自动为您运行
nameA()
;除非调用
nameA()
,否则
token
属性的值为空,因为
newsomething()
不会自动为您运行
nameA()
;除非调用
nameA()
first从技术上讲,他们已经将
token
设置为公共类成员-您可以通过
$ok->token=“fred”操作它;echo$ok->token//打印“fred”
该类没有以任何方式进行封装。这是可行的,但是除了使用u construnt(),是否还有其他方式可以插入值?对于您的代码,您需要首先调用
nameA()
从技术上讲,他们已经将
令牌设置为公共类成员-您可以通过
$ok->token=“fred”;echo$ok->token;//打印“fred”
该类未以任何方式封装。回答不错-与“最快手指优先”效果不符…回答不错-与“最快手指优先”效果不符。。。