如何从类中的静态函数调用非静态方法


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 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;

?> "