[英]How to call a non-static method from a static function in a class in php
我的代碼如下:
<?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 不工作所以首先我們創建當前類的對象。
`
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;
?>`
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.