我这里有代码,
class someClass {
public $someMember;
public function __construct() {
$this->someMember = 1;
}
public static function getsomethingstatic() {
return $this->someMember * 5;
}
}
$obj = new someClass();
echo $obj::getsomethingstatic();
并返回错误,我知道它与静电有关,但我找不到好的解释。我知道如何解决这个问题,我只是在寻找一个可以增加我理解的解释。
任何?
答案 0 :(得分:2)
静态函数($obj::
)无法返回/使用非静态($this
)类属性,您必须使getsomethingstatic
非静态函数才能返回变量或使变量静态并分别更新其他函数。
由于$this
指的是有问题的实例,并且按照定义使用静态函数在实例之外使用,因此无法混合。
<强>普罗蒂普强>
将来请在OP中包含错误。很容易发现这个问题中的错误,但它可能不会出现在另一个案例中,所以包括所需的信息可以加快这个过程。
答案 1 :(得分:1)
您不在静态方法中使用对象访问器->
。请改用范围解析运算符::
;在其前面添加self
或static
,如下所示。但是一定要在Static方法中只使用静态成员变量/属性......
class someClass {
public static $someMember;
public function __construct() {
self::$someMember = 1;
// OR
static::$someMember = 1;
}
public static function getsomethingstatic() {
return self::$someMember * 5;
// OR
return static::$someMember * 5;
}
}
// TO CALL A STATIC METHOD OF A CLASS,
// YOU NEED NOT INSTANTIATE THE CLASS...
// SIMPLY CALL THE METHOD DIRECTLY ON THE CLASS ITSELF....
echo someClass::getsomethingstatic();