如何在php中从类中的静态函数调用非静态方法
我的代码如下:如何在php中从类中的静态函数调用非静态方法,php,function,oop,Php,Function,Oop,我的代码如下: <?php class ClassName { private $data = null; public function __construct($data) { $this->data = $data; } public static function staticFun ($data) { echo $this->another
<?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')
asstaticFun
是一个静态函数,但我得到了致命错误:当不在对象上下文中时使用$this
错误。我知道静态方法和非静态方法之间的区别,以及如何调用它们,但是在上面的代码中出现了给定的错误
可以在静态方法中调用非静态方法吗?如果没有,应该如何修改代码以使其工作
提前谢谢 只需创建一个实例:
public static function staticFun ($data) {
$instance = new ClassName($data);
echo $instance->anotherFun($data);
}
注意:对于另一个函数,您有一个参数
$data
,但您不能在任何地方使用它。使用下面的代码,您可以从静态函数调用另一个函数
在静态方法$this中,它不起作用,所以首先我们创建当前类的对象
`
?>`用其他东西替换
$this
。@bantya很乐意帮忙!请记住选择答案!:)
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;