簡體   English   中英

向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關鍵字將變量綁定到函數的作用域中。

閉包可以從父范圍繼承變量。 任何此類變量都必須在函數頭中聲明[使用]。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM