动态调用PHP函数

动态调用PHP函数,php,Php,有没有办法通过变量调用函数 例如,我想调用函数Login()。我可以这样做吗: $varFunction = "Login"; //to call the function 我可以使用$varFunction吗?您可以使用 $varFunction = "Login"; $varFunction(); …不用说,要确保变量是可信的 是的,您可以: $varFunction(); 或: 确保验证$varFunction是否存在恶意输入 对于你的模块,考虑这样的事情(取决于你的实际需要):

有没有办法通过变量调用函数

例如,我想调用函数Login()。我可以这样做吗:

$varFunction = "Login"; //to call the function
我可以使用$varFunction吗?

您可以使用

$varFunction = "Login";
$varFunction();
…不用说,要确保变量是可信的

是的,您可以:

$varFunction();
或:

确保验证$varFunction是否存在恶意输入


对于你的模块,考虑这样的事情(取决于你的实际需要):

然后使用正确的模块实例调用runModuleMain()
 <?php
  $fxname = 'helloWorld';

  function helloWorld(){
    echo "What a beautiful world!";
  }

  $fxname(); //echos What a beautiful world!
?>

> p>您确实应该考虑使用模块类,因为这将允许您既具有一致的代码结构,又保持方法名称对于多个模块是相同的。这还将使您能够灵活地继承或更改每个模块的代码


在本主题中,除了如上所述调用方法(即使用变量作为函数名或*函数族),从PHP 5.3开始,您可以使用动态匿名函数,这可以为您提供另一种方法来执行所需操作。

我成功地按如下方式调用函数:

$methodName = 'Login';
$classInstance = new ClassName();
$classInstance->$methodName($arg1, $arg2, $arg3);
它适用于PHP5.3.0+


我也在拉威尔工作。

如果它在同一个班级:

$funcName='Login';
//没有论据:
$this->$funcName();
//有论据:
$this->$funcName($arg1,$arg2);
//也可接受:
$this->{$funcName}($arg1,$arg2)
如果它在不同的类中:

$someClass=newsomeclass();//如果变量中不存在,则创建新变量
$someClass->$funcName($arg1,$arg2);
//也可接受:
$someClass->{$funcName}($arg1,$arg2)

提示

如果函数名也是动态的:

$step=2;
$this->{'handleStep'.$step}($arg1,$arg2);
//或
$someClass->{'handleStep'.$step}($arg1,$arg2);

这将调用
handleStep1()
handleStep2()
,等等。根据
$step
的值,PHP支持此操作。但我强烈建议不要使用它,除非你是受虐狂或计划破坏Hi,事实上这是因为我希望有相同的函数名,但用于不同的模块。例如,登录模块和配置文件模块都有一个函数调用main()@Col.Shrapnel,为什么不使用它呢?MVC软件的路由部分非常有用,URL映射到控制器和方法。。我想我会用这个。网络托管公司是否有可能禁用此功能?这只是一个脚本,所以如果他们禁用此功能,您可能无法运行任何代码。嘿,tks,这也可以。但是,这与调用_user_func();?有什么不同@nuttynibbles没有真的,我提到的版本对于函数调用来说更具语法糖分。可能有一些细微的差别,但我不确定是什么。
 <?php
  $fxname = 'helloWorld';

  function helloWorld(){
    echo "What a beautiful world!";
  }

  $fxname(); //echos What a beautiful world!
?>
$methodName = 'Login';
$classInstance = new ClassName();
$classInstance->$methodName($arg1, $arg2, $arg3);