[英]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
關鍵字將變量綁定到函數的作用域中。
閉包可以從父范圍繼承變量。 任何此類變量都必須在函數頭中聲明[使用]。
http://www.php.net/manual/zh/functions.anonymous.php
$locale = "nl_NL";
$info['t'] = function($text, $render) use ($locale) {
return translate($text, $locale);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.