Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中从类中的静态函数调用非静态方法_Php_Function_Oop - Fatal编程技术网

如何在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')
as
staticFun
是一个静态函数,但我得到了
致命错误:当不在对象上下文中时使用$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;