如何将php Class方法保存在变量

时间:2016-12-22 09:02:52

标签: php

1.我的错误代码

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 ):

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

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

Bobot JezEmery devmyb ......等

感谢您的帮助

4 个答案:

答案 0 :(得分:3)

你没有调用该函数,而是试图访问一个属性(找不到)。

$test = $c->test();

这应该有效。

答案 1 :(得分:2)

因为你没有error_reporting on,否则你也会收到通知,警告和致命错误

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

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)

答案 2 :(得分:2)

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

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

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

我想some documentation about anonymous functions可以帮助您理解代码。

答案 3 :(得分:1)

这是正确的代码。函数为no之后;

class classname {

        function __construct(){

        }

        public function test() {
            return 0;
        }

    }

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