这是我的代码:
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>";
输出:
严格标准:访问静态属性内容::$total作为非静态属性,位于C:''Users''jodi''Documents''Visual Studio 2013''Projects''FinalProject''index.php第10行
内容对象([text]=>hai[total]=>0)
content对象([text]=>hai[total]=>0)
CCD_ 1没有改变。出现错误。-,-
如何增加$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++;
}
}