gpt4 book ai didi

php - 严格标准:以非静态方式访问静态属性内容::$total

转载 作者:行者123 更新时间:2023-12-02 21:22:24 25 4
gpt4 key购买 nike

这是我的代码:

class content
{
public $text;
public static $total;

function __construct($content){
$this->text = $content;
$this->total = 0;
}

public static function vote(){
self::$total++;
}

}


$foo = new content("hai");
echo "<pre>";
print_r($foo);
echo "</pre>";

$foo::vote();

echo "<pre>";
print_r($foo);
echo "</pre>";

输出:


严格标准:在 C:\Users\jodi\Documents\Visual Studio 2013\Projects\FinalProject\FinalProject\index.php 中以非静态方式访问静态属性内容::$total > 上线10

content Object(    [text] => hai    [total] => 0)
content Object(    [text] => hai    [total] => 0)

$total 没有改变。并得到错误。 -,-

如何增加$total

还有其他办法吗?

最佳答案

问题来自于在构造函数中将变量 $total 引用为对象变量,因为您已将其声明为 static,这是一个类变量。
由于我不知道您的设计背后的想法,您(至少)有两个选择:
选项 1:
如果您需要 $total 作为类变量,请从构造函数中删除初始化。您可以定义默认值 0 并使用对象方法来获取类变量的值,即

class content
{
public $text;
public static $total = 0;

function __construct($content){
$this->text = $content;
}

public function getTotal() {
return self::$total;
}

public static function vote(){
self::$total++;
}

}

选项 2:
如果您并不真正需要它作为类变量,而是需要一个对于您实例化的每个对象都不同的字段,请删除 static 并声明 vote()方法作为对象方法:

class content
{
public $text;
public $total;

function __construct($content){
$this->text = $content;
$this->total = 0;
}

public function vote(){
$this->total++;
}

}

关于php - 严格标准:以非静态方式访问静态属性内容::$total,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26708352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com