2012-09-24 73 views
0

此代碼的工作,可能有更好的方法來實現的事情,但我的問題是,傳遞函數作爲參數傳遞給另一個函數

有沒有經過任何這樣的特定術語?(與匿名函數),
這是一個可以接受的做法? ,

是針對標準嗎?

<?php 
// suppose the only way i can retrieve the content is by using this function 
//like wordpress equivalent of the_content() 
function mycontent() 
{ 
    $Original_content="oldcontent"; 
    return $Original_content; 
} 

//instead of ---> echo $Original_content."facebook,twitter code"; 
//if i define a new function 
function social_share($content) 
{ 
    $added_social=$content; 
    $added_social.=" + facebook,twitter code..."; 
    echo $added_social; 
} 

//function call 
social_share(mycontent()); 
?> 

在此先感謝:)

+0

你有某種非常基本的...控制器也許,但它是相當最小。從那裏工作,並建立它。看看它是否有效,然後可能作爲獎勵檢查,如果它擴大。 – stefgosselin

+0

你正在做什麼是完全正常的,但你實際上並沒有經過「一個函數作爲參數傳遞給另一個函數」。 social_share(mycontent())首先評估mycontent(),該函數的結果被傳遞給社交共享,而不是函數mycontent。但這只是術語,代碼本身很好。 我不認爲你在做什麼有一個特殊的術語。 它只是簡寫:$ tmp = mycontent(); social_share($ TMP);你的代碼是可取的,因爲你沒有創建無用的變量。 – rx80

回答

2

你不及格的功能。您將一個函數調用的結果直接傳遞給另一個作爲參數。 '傳遞函數'意味着'父'函數將在某個時刻調用'孩子'函數。在這種情況下,social_share根本就不會調用mycontent() - 這甚至在social_share執行之前就已經完成了。

話雖這麼說,如果你有這樣的事情:

function my_echo($arg) { 
    print($arg); 
} 

function social_share($somearg, $func_to_invoke) { 
    $$func_to_invoke($somearg); 
} 

social_share('hello', 'my_echo'); 

那麼你會通過將其作爲參數調用從另一個功能。在這種情況下,你會得到「你好」由你的小定製my_echo功能打印出來,從來沒有寫過my_echo('hello');

+0

非常感謝您,先生:) – jathin

2

沒有錯的。事實上,這很像面向對象的方法。您可以創建一個擁有這些方法的類,並使用它們將其他屬性傳遞給其他對象和類等。在我看來,這是一個很好的做法。

+0

謝謝,很高興知道這是一個正確的做法:) – jathin

相關問題