2013-07-07 59 views
1

我有這樣PHP - 創建函數名變量

$form_names = GFFormsModel::get_forms(); 
foreach ($form_names as $form) { 
    add_action("gform_pre_submission_".$form->id, "format_ecp_event_meta_from_gravity"); 

    function format_ecp_event_meta_from_gravity(){ 

    } 
} 

一些代碼,因爲我使用foreach循環功能得到複製。那麼有沒有一種方法可以使用$form->id來使這個功能唯一?

我的意思是,我想這樣的函數名

function format_ecp_event_meta_from_gravity_{$form->id}(){ 

} 

有人能幫助我嗎? 感謝

+0

看起來像一個匿名函數完美的用例場景:http://www.php.net/manual/en/functions.anonymous.php – Niko

+0

你能explane你想用這個函數做什麼,我認爲在循環中創建函數是不好的 –

+0

@Niko但是我的函數有很大的代碼。你解釋瞭如何在匿名函數中使用大代碼嗎? – Giri

回答

2

使用閉:

$form_names = GFFormsModel::get_forms(); 
foreach ($form_names as $form) { 
    $func = function() { 
     ... 
    }; 
    add_action("gform_pre_submission_".$form->id, $func); 
} 
+0

函數可能還需要傳入'add_action()',因爲它們似乎在那裏被調用。 – Niko

+0

@Niko thx的建議。檢查我的更新 – hek2mgl

+0

@ hek2mgl你能解釋這最後一行'$ functions ['func_name'] = $ func;'?我應該用func_name替換什麼名字? – Giri