如何在PHP中将成员方法转换为函数指针?

时间:2014-08-28 18:39:51

标签: php

E.g。

class Foo {

    public function testFn($fn) {
        $fn();
    }

    public function hello() {
        echo 'World';
    }
}

那么,如何将hello方法传递给testFn方法? (通过传递我的意思是传递任何类中的任何成员方法)

e.g。

 $bar = new Foo();
 $bar->testFn($bar->hello); // this will not work 

3 个答案:

答案 0 :(得分:0)

<?php

class Foo {

    public function testFn($fn) {
        $this->$fn();
    }

    public function hello() {
        echo 'World';
    }
}

$bar = new Foo();
$bar->testFn('hello');

答案 1 :(得分:0)

$bar = new Foo();
$bar->testFn([$bar, 'hello']);

请参阅callable pseudo type的文档。

答案 2 :(得分:0)

哦,这是奇怪的代码......但它有效:

class Foo {

    public function testFn($fn) {
        $this->$fn();
    }

    public function hello() {
        echo 'World';
    }
}

$bar = new Foo();
$bar->testFn('hello');