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