将函数作为参数传递给另一个函数

时间:2012-09-24 03:55:08

标签: php

此代码有效,可能有更好的方法来实现,但我的问题是,

这样的传递是否有任何特定术语? (与匿名函数一样),
   这是一种可以接受的做法吗? ,

是否符合标准?

<?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());
?>  

提前感谢:)

2 个答案:

答案 0 :(得分: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函数打印出“hello”,而无需编写my_echo('hello');

答案 1 :(得分:2)

这根本没有错。事实上,这很像面向对象的方法。您可以创建一个具有这些方法的类,并使用它们将其他属性传递给其他对象和类等。在我看来,这是一个很好的做法。