請問smarty註冊函數問題。
$smarty->register_function('dateline', 'handle_dateline'); //這是註冊函數 ,第一個參數是什麼意思?
function handle_dateline($params, &$smarty) {} //這是被註冊函數 ,這2個參數是什麼意思?
註冊函數是不是會導致函數執行?是不是類似於調用函數?
回複討論(解決方案)
$smarty->register_function(' dateline', 'handle_dateline');
dateline 是在模板裡使用的名字
如
{dateline time="$time" format="Y-m-d"}
而不是
{handle_dateline time="$time" format="Y-m-d"}
呵呵,自己找罪受
function handle_dateline($params, &$smarty) {}
$params 傳入的參數數組,比如上例中就有兩個元素
函數體你可能會這樣寫
extract($params);
echo date($format,$time);
$smarty smarty 對象本身,因為你有可能需要在函數體內訪問 $smarty 的屬性和方法
$smarty->register_function(' dateline', 'handle_dateline');
dateline 是在模板裡使用的名字
如
{dateline time="$time" format="Y-m-d"}
hello,這樣說的話,
$smarty->register_function('dateline', 'handle_dateline');
並沒有傳遞任何參數給function handle_dateline($params, &$smarty) {}??
註冊函數上面的語句,會不會導致函數 “function handle_dateline($params, &$smarty) {} ” 執行?
不會執行,它只是註冊了一個函數,需要你在模板中調用時才會執行,參數也是此時傳遞的。
不會執行,它只是註冊了一個函數,需要你在模板中調用時才會執行,參數也是此時傳遞的。
參數是在調用時候才會傳遞的 ,也就是說跟註冊函數無關。那註冊函數到底有什麼用??難道只是為了讓它的值在tpl中顯示嗎?
註冊的目的是讓 smarty 找到他,不然就會出錯!
說白了,它就是註冊一個函數,讓你在tpl調用。