簡體   English   中英

如何從php類中的靜態函數調用非靜態方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM