将参数添加到 lambda
Adding parameter to lambda
我正在使用 Mustache 的 Lambda 在我的模板中实现翻译。
我的模板使用了这些标签:
<h1>{{#t}}Some translatable text{{/t}}</h1>
然后,在我的数据中,我注册了一个 lambda 来获取翻译:
$info['t'] = function($text, $render) {
return translate($text);
}
但是,我希望能够在那个 lambda 中设置语言环境,但我似乎没有做对:
$locale = "nl_NL";
$info['t'] = function($text, $render, $locale) {
return translate($text, $locale);
}
不起作用(显然),因为 Mustache 使用两个参数调用此 lambda。尝试使用默认参数也不起作用:
$lc = "nl_NL";
$info['t'] = function($text, $render, $locale = $lc) {
return translate($text, $locale);
}
因为您不能将变量用作默认值。
我怎样才能让它工作?
我觉得变量的作用域有问题,
$lc = "nl_NL";
$info['t'] = function($text, $render) use($lc) {
return translate($text, $lc);
}
应该可以解决你的问题
使用 use
关键字将变量绑定到函数的范围内。
闭包可以从父作用域继承变量。任何此类变量都必须在函数头中声明 [using use].
http://www.php.net/manual/en/functions.anonymous.php
$locale = "nl_NL";
$info['t'] = function($text, $render) use ($locale) {
return translate($text, $locale);
}
我正在使用 Mustache 的 Lambda 在我的模板中实现翻译。
我的模板使用了这些标签:
<h1>{{#t}}Some translatable text{{/t}}</h1>
然后,在我的数据中,我注册了一个 lambda 来获取翻译:
$info['t'] = function($text, $render) {
return translate($text);
}
但是,我希望能够在那个 lambda 中设置语言环境,但我似乎没有做对:
$locale = "nl_NL";
$info['t'] = function($text, $render, $locale) {
return translate($text, $locale);
}
不起作用(显然),因为 Mustache 使用两个参数调用此 lambda。尝试使用默认参数也不起作用:
$lc = "nl_NL";
$info['t'] = function($text, $render, $locale = $lc) {
return translate($text, $locale);
}
因为您不能将变量用作默认值。
我怎样才能让它工作?
我觉得变量的作用域有问题,
$lc = "nl_NL";
$info['t'] = function($text, $render) use($lc) {
return translate($text, $lc);
}
应该可以解决你的问题
使用 use
关键字将变量绑定到函数的范围内。
闭包可以从父作用域继承变量。任何此类变量都必须在函数头中声明 [using use].
http://www.php.net/manual/en/functions.anonymous.php
$locale = "nl_NL";
$info['t'] = function($text, $render) use ($locale) {
return translate($text, $locale);
}