Php 如何将一个方法调用为另一个方法的函数?

Php 如何将一个方法调用为另一个方法的函数?,php,function,methods,Php,Function,Methods,这是我的代码: class myclass{ public function one(){ return 'sth'; } public function two(){ function myfunc($arg){ if ($arg){ return $this->one(); } else { return 'noth

这是我的代码:

class myclass{

    public function one(){
        return 'sth';
    }

    public function two(){
        function myfunc($arg){
            if ($arg){
                return $this->one();
            } else {
                return 'nothing';
            }
            myfunc(true);
        }
    }
}

$obj = new myclass;
echo $obj->$this->two();
正如您在小提琴中看到的,它抛出以下错误:

致命错误:未捕获错误:当不在/in/E1U9n:25中的对象上下文中时使用$this

我怎样才能解决这个问题?预期的结果是

首先,你称我为真;在它自己的范围内,所以它不是 据我所知,可以在其范围内调用函数 其次,在一个不知道它属于哪个类的函数范围内调用$this。 第三,正如它所假设的那样,你没有从函数2中返回任何东西。它不会引起任何反响。 看到小提琴了吗


您的代码非常混乱,因为您缺乏基本知识和经验。我强烈建议您阅读有关PHP中OOP的基础知识。


Downvoter,请留下评论并解释我的问题出了什么问题?如果更改echo$obj->$this->two会发生什么;响应$obj->2@在你的情况下,错误将消失。但是为什么不打印呢?老实说,我不知道。据我所知,它应该会返回一些东西……此外,我强烈建议将此问题编辑为较新的问题,因为此问题可以通过删除一个打字错误来解决。我也发现了同样的情况。好极了!我要一个好的@MartinAJ
class myclass{

    public function one(){
        return 'sth';
    }

    public function two(){
        function myfunc($arg){
            if ($arg){
                $newobj = new myclass();
                return $newobj->one();
            } else {
                return 'nothing';
            }

        }
        return myfunc(TRUE);
    }
}


$obj = new myclass;
echo $obj->two();
<?php

class myclass {

    public function one()
    {
        return 'sth';
    }

    public function two()
    {
        return $this->myfunc(true);
    }

    protected function myfunc($arg)
    {
        if ($arg)
            return $this->one();
        else
            return 'nothing';
    }

}

$obj = new myclass;
echo $obj->two();