php - 动态调用函数

nut*_*les 15 php

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

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

$varFunction = "Login"; //to call the function
Run Code Online (Sandbox Code Playgroud)

我可以使用$ varFunction吗?

maa*_*nba 26

是的你可以:

$varFunction();
Run Code Online (Sandbox Code Playgroud)

要么:

call_user_func($varFunction);
Run Code Online (Sandbox Code Playgroud)

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


编辑:

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

abstract class ModuleBase {
  public function main() {
    echo 'main on base';
  }
}

class ModuleA extends ModuleBase {
  public function main() {
    parent::main();
    echo 'a';
  }
}

class ModuleB extends ModuleBase {
  public function main() {
    parent::main();
    echo 'b';
  }
}

function runModuleMain(ModuleBase $module) {
  $module->main();
}
Run Code Online (Sandbox Code Playgroud)

然后使用正确的模块实例调用runModuleMain().


ale*_*lex 6

您可以使用...

$varFunction = "Login";
$varFunction();
Run Code Online (Sandbox Code Playgroud)

......不言而喻,确保变量是可信的.