2011-09-12 42 views
0

实际上,我希望创建一个功能,将所有类似的功能与类似的功能名称结合在一起。例如,在php中为函数名添加参数?

<?php 
//this function carry the function name I wish to create. For example:function try 
a("try"); 


function a($arg) 
{ 
    //I wish to create function with the name carried by $arg 
    //but function $arg won't work 
} 
?> 

任何人都可以指导我有关这样的功能吗?

+1

你能详细说明你为什么要这样做吗?这种破碎的设计气味,我相信有一个更好的方式来实现你想要的 –

+0

你的意思是你是在一条线后,将调用函数b?在这种情况下,您需要变量变量$$ arg,但我同意@Pekka会有更好的方法。 –

+0

(ref)[create_function](http://php.net/manual/function.create-function.php) – Yoshi

回答

1

PHP能够使用变量作为调用时函数的名称,以便所有你需要做的就是

function a($arg) 
{ 
    if (!function_exists($arg)) { 
     throw new InvalidArgumentException(
      sprintf('"%s" is not a valid function', $arg)); 
    } 
    $arg(); 
} 

如果你必须沿着功能路径,你应该做正确

function a(Closure $callback) 
{ 
    $callback(); 
} 

a(function() { 
    echo 'This is a callback'; 
}); 

甚至

$b = function() { 
    echo 'I am an anonymous function'; 
}; 

a($b); 

http://php.net/manual/en/functions.anonymous.php

+0

据我所知,除非你使用[eval()](http://es.php.net/eval),否则你可以使用变量来调用已有的函数,但不能创建它们说,是产生不安全且难以维护代码的最快方法。不过,它可以用类方法完成(http://es.php.net/__call)。然而,主要问题是:创建功能,做*什么*? –

+0

@Álvaro我可能误解了这个问题 – Phil

+0

嗯,这个问题很难理解:)但是你的答案很好。 –