如何在类中定义函数签名(实际上没有定义函数体)

时间:2014-03-23 16:05:57

标签: php callback delegates

PHP中这些代码有什么区别?

代码1:

$func=function($name){
         return "name : ".$name;

};
echo $func('john');// << it is true

码2:

class myclass{
         public $name;
         public $func;

}
$c=new myclass();
$c->func=function($n){
         return "name : ".$n;
};
echo $c->func();// << ?!.. is error 

第一个代码工作正常,但第二个代码出错。我该如何解决? 旁注:我的PHP版本是5.3.4

1 个答案:

答案 0 :(得分:1)

您可以使用PHP中的Closures来解决此问题。

<?php
class A {
    public $name;
    public $func;
}

$cl2 = function($n) {
     return "name : ".$n;
};


$func = Closure::bind($cl2, new A(), 'A');
echo $func('john');

<强> OUTPUT :

name : john