类比 js Function 对象的 bind 的方法
:
var name = 'ys';
var getHeightFunc = getHeight.bind(null , name);
var info = combineInfo(name , getHeightFunc);
console.log(name + ' 的信息:' , info);
function getHeight(name){
var person = {
'cxl' => 167 ,
'ys' => 165
};
var k;
for (k in person)
{
if (k === name) {
return person[k];
}
}
return false;
}
function combineInfo(name , getHeightFunc){
var name = typeof name !== 'string' ? '未定义名称' : name;
var height = getHeightFunc();
return {
name: name ,
height: height
};
}
PHP
函数如何实现上面的这种效果??
js的bind有两个部分,绑定this和绑定参数。
绑定this在php里可以用Closure::bind,绑定参数要通过匿名函数(闭包)和反射实现。
先看直接用实现:
上面的
bind
函数只能绑定一个参数,要绑定多个参数: