3

いくつかの「フィルター」を備えたデータベースがあります。つまり、メソッド呼び出しであり、ユーザーが入力した内容に応じて動的に呼び出すことができるようにする必要があります。

Code Igniterはこれを好まないようですが、何かアイデアはありますか?出力:GetEmailCountfilter_male_count():

<h4>A PHP Error was encountered</h4>

<p>Severity: Notice</p>
<p>Message:  Undefined property: Targeted_Email::$filter_male_count()</p>
<p>Filename: core/Model.php</p>
<p>Line Number: 51</p>

{"emailCount":null}

コード:

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

  return $result
  }
4

3 に答える 3

8

foreachループは次のようになります。

$test = $row->filterCountFunction;
$this->{$test}();
于 2012-07-09T13:02:44.417 に答える
0

以下のコードが機能します。

  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;
       }
于 2012-07-09T12:58:48.613 に答える
0

call_user_funcを使用して、パラメーターを使用して動的関数を呼び出すことができます

$result['emailCount'] = call_user_func('filter_function_name',$parameters);
于 2012-07-09T12:59:59.577 に答える