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
答案 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