Php CodeIgniter动态方法调用
我有一个带有一些“过滤器”的数据库;i、 方法调用,并希望能够根据用户的输入动态调用它们 代码点火器似乎不喜欢这个,但是,有什么想法吗? 它输出: 在GetEmailCountfilter\u male\u count()中:Php CodeIgniter动态方法调用,php,codeigniter,Php,Codeigniter,我有一个带有一些“过滤器”的数据库;i、 方法调用,并希望能够根据用户的输入动态调用它们 代码点火器似乎不喜欢这个,但是,有什么想法吗? 它输出: 在GetEmailCountfilter\u male\u count()中: 下面的代码将起作用 public function getEmailCount($filter){ echo 'In GetEmailCount'; $result = array(); $query = $this->db->get('bas
下面的代码将起作用
public function getEmailCount($filter){
echo 'In GetEmailCount';
$result = array();
$query = $this->db->get('base_targeted_email_filters');
foreach ($query->result() as $row){
if($filter == $row->name){
$test = $row->filterCountFunction . "()";
echo $test;
$result['emailCount'] = $this->$test;
}
可以使用调用带有参数的动态函数
$result['emailCount'] = call_user_func('filter_function_name',$parameters);
foreach循环应如下所示:
$test = $row->filterCountFunction;
$this->{$test}();
感谢您的回复,但是我仍然得到相同的输出:这可能与CodeIgniter处理此问题的方式有关吗?您可以尝试调用_user_func($test)或调用_user_func($this->$test)而不是$this->$test;filter\u male\u count遇到PHP错误严重性:警告消息:call\u user\u func()期望参数1为有效回调,未找到函数'filter\u male\u count'或函数名无效文件名:models/base\u targeted\u email\u model.PHP行号:253{emailCount:null}代码看起来确实错误<代码>$row->filtercount函数。“()”非常感谢:)现在可以正常工作,因为属性名不应该以数字开头,而应该以字符串开头。所以我们需要在花括号中扭曲以使数值属性有效。@user254153不,这不是因为它以数字开头,我甚至不明白你为什么要在这里评论它。你能详细说明为什么我们需要花括号吗。因为我已经看到,当属性为numeric时,我们可以在使用大括号包装属性后使用访问。@user254153因为在问题中,
$test
成为属性filterCountFunction
(未设置)的值,并连接到两个大括号字符()
下班后我会尝试一下你的方法,并让你知道:)谢谢你的建议:)
$result['emailCount'] = call_user_func('filter_function_name',$parameters);
$test = $row->filterCountFunction;
$this->{$test}();