Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php CodeIgniter动态方法调用_Php_Codeigniter - Fatal编程技术网

Php CodeIgniter动态方法调用

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

我有一个带有一些“过滤器”的数据库;i、 方法调用,并希望能够根据用户的输入动态调用它们

代码点火器似乎不喜欢这个,但是,有什么想法吗? 它输出: 在GetEmailCountfilter\u male\u count()中:


下面的代码将起作用

  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}();