如何使用函数名和参数作为变量调用适当的函数?PHP
我想根据参数和表名发出ajax请求,获取数据以在不同的表上执行连接操作如何使用函数名和参数作为变量调用适当的函数?PHP,php,mysql,function,oop,parameter-passing,Php,Mysql,Function,Oop,Parameter Passing,我想根据参数和表名发出ajax请求,获取数据以在不同的表上执行连接操作 $.ajax({ url: '/my/site', data: {fun_name: 'join_user_and_state', param: '12,1' }, type: 'post', success: function(output) { alert(output); } }); 在服
$.ajax({ url: '/my/site',
data: {fun_name: 'join_user_and_state',
param: '12,1'
},
type: 'post',
success: function(output) {
alert(output);
}
});
在服务器端,应读取action POST参数和函数名,相应的值应指向要调用的方法,例如:
if(!empty($_POST['param']) && !empty($_POST['fun_name'])) {
$param= $_POST['param']; $fun_name= $_POST['fun_name'];
// want to call proper function name with parametters from $fun_name and $param
// parameters could be 2 or 3 or more its depends upon user choice
// how to call
}
//definitions
join_user_and_state($user_id,$state_id)
{
// will do join query here with 2 tables
}
join_user_and_city($user_id,$city_id)
{
// will do join query here with 2 tables
}
join_user_and_state_and_city($user_id,$state_id,$city_id)
{
// will do join query here with 3 tables
}
如何调用适当的函数
或者有其他方法可以实现同样的效果,我必须根据用户的选择执行不同的加入查询,如用户所在州、用户所在城市、用户受教育程度、用户工资等(所有这些都是可能的)?这些列在它们自己的表中您可以使用call\u user\u func()
例如:
if(!empty($_POST['param']) && !empty($_POST['fun_name'])) {
$param= $_POST['param']; $fun_name= $_POST['fun_name'];
$returnval = call_user_func($fun_name, explode(",", $param));
//handle return variable etc....
}
这种方法是快速的还是使用if-else给我快速的结果?@amitgupta这很简单,因为它只有一行。如果以后添加更多函数,这将是一种更好的方法,就像If-else一样,如果函数越多,则需要越来越多的If语句。好的,谢谢,这是一种处理diff-join操作的好方法,意味着每个连接都有不同的函数,还是我应该只进行一个查询,并在同一个查询上传递所有变量?请参阅我问题的最后3-4行。是否有其他方法可以达到同样的效果?@amitgupta您可以只调用一个函数,该函数根据要使用的表和参数的给定配置构建SQL查询。