代码如下:
<?php
class ClassName {
private $data = null;
public function __construct($data) {
$this->data = $data;
}
public static function staticFun ($data) {
echo $this->anotherFun($data);
}
private function anotherFun ($data) {
return $this->data;
}
}
?>
我试图调用ClassName::staticFun('nilya');
作为staticFun
是一个静态函数,但我得到Fatal error: Using $this when not in object context
错误。我知道静态和非静态方法之间的区别以及如何调用它们,但是,在上面的代码中出现了给定的错误。
是否可以在静态方法中调用非静态方法?如果不是,应该如何修改代码使其工作?
提前感谢!
创建一个实例:
public static function staticFun ($data) {
$instance = new ClassName($data);
echo $instance->anotherFun($data);
}
注意:你有一个参数$data
anotherFun
,但你不使用它在任何地方
使用下面的代码你可以从静态函数调用另一个函数
在静态方法$this Not Working So中,我们首先创建当前类的对象。
'
class ClassName {
private $data = null;
public function __construct($data) {
$this->data = $data;
}
public static function staticFun ($data) {
$call = new ClassName($data);
$value = $call->anotherFun($data);
return $value;
}
private function anotherFun ($data) {
return $this->data;
}
}
$obj = new ClassName("vajram");
$valueget = $obj->staticFun("phaneendra");
echo $valueget;
?> "