如何将php类方法保存在变量中

如何将php类方法保存在变量中,php,Php,这是我的错误代码 class classname{ function __construct(){}; public function test(){return 0;}; } $c = new classname(); $test = $c->test; var_dump($test); //out put NULL, I want the method $c->test 我不想执行函数并存储结果 我的代码有问题。 怎么写啊 下面是我想要的代码(由Bobot提

这是我的错误代码

class classname{
    function __construct(){};
    public function test(){return 0;};
}

$c = new classname();
$test = $c->test;
var_dump($test); //out put NULL, I want the method $c->test
我不想执行函数并存储结果

我的代码有问题。 怎么写啊


下面是我想要的代码(由Bobot提供):


devmyb的回答很有帮助,他/她告诉我为什么我的代码不起作用


Bobot、JezEmery、devmyb。。。等


感谢您的帮助

这是正确的代码。一个函数之后是否

class classname {

        function __construct(){

        }

        public function test() {
            return 0;
        }

    }

    $c = new classname();
    $test = $c->test;

您没有调用函数,而是试图访问一个属性(未找到)


这应该行。

这是因为你没有报告你的
错误
否则你也会收到通知、警告和致命错误

如果您有印刷错误,请检查更新的代码

class classname{
    function __construct(){} // removed ;
    public function test(){return 0;} // removed ;
}

$c = new classname();
$test = $c->test; // You were calling variable of your class
$test1 = $c->test(); // You were calling method of your class i.e.  public function test()
var_dump($test);
var_dump($test1);
输出:

Notice: Undefined property: classname::$test in /in/HBNf9 on line 9
NULL
int(0)

你的问题不清楚,但我想你想这样做:

$test=function()使用($c){return$c->test();}

然后,当需要运行方法时,只需运行函数:
$test()


我想这可以帮助您理解代码。

$test=function()使用($c){return$c->test();}然后在需要时:
$test()但我想这是错误的方式。。。。。或者您只是想执行函数并存储结果?=><代码>$test=$c->test()
您试图实现的是将属性
test
存储在变量
$test
中,您可以尝试
$method='test'$test=$c->$method()谢谢,非常感谢!这是一个解决我问题的方法!但是Bobot的答案是我想要!请听我的问题!我不想问语法错误!我想在一个变量中保留一个类方法。你有同样的语法错误,因为你的代码除了格式之外完全相同。自从我给出答案后,这个问题就被编辑了。在:“\uu construct(){};”之前,我只想在一个变量中保留一个类方法,而不是类方法结果!就这样!是的,但我想在变量中保留一个类方法,如何?太棒了!是的,这是我的问题!将类方法保留在变量中是否是一种错误的方法?好吧,一旦实例化了一个类,当您只需要执行
$c->test()时,为什么还要执行所有这些操作?如果你认为你需要它,你可能是对的,我没有看到你的代码,但这看起来是一个范例…这是正确的!mac的默认php有问题!但是当我把它改成linux的时候!它工作得很好!太多了!
class classname{
    function __construct(){} // removed ;
    public function test(){return 0;} // removed ;
}

$c = new classname();
$test = $c->test; // You were calling variable of your class
$test1 = $c->test(); // You were calling method of your class i.e.  public function test()
var_dump($test);
var_dump($test1);
Notice: Undefined property: classname::$test in /in/HBNf9 on line 9
NULL
int(0)