2012-09-24 75 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

相关问题