1

CodeIgniter ページから直接取得。

$this->form_validation->set_rules('username', 'Username', 'trim|required|min_length[5]|max_length[12]|xss_clean');

この部分:

'trim|required|min_length[5]|max_length[12]|xss_clean'

PHP には | で値を区切る機能が組み込まれていますか? チェックしますか、または CodeIgniter は手動で行いますか?

もしそうなら、

なぜ彼らはこのようなものを使わないのですか?

set_rules('username', 'Username', array('trim', 'required' ...));

チェックするために不要なコードを無駄にするよりも、配列を扱う方がはるかに簡単ではありませんか | シンボルと別のタグ?

4

1 に答える 1

3

CodeIgniter は、 (パイプ) をセパレータとしてexplode()使用して、その文字列に対して を実行します。|結局のところ、デザイナーの好みと創造性だけです。

以下は、分割を行うCI ソースからのスニペットです。

// Cycle through the rules for each field, match the
// corresponding $_POST item and test for errors
    foreach ($this->_field_data as $field => $row)
    {
        // Fetch the data from the corresponding $_POST or validation array and cache it in the _field_data array.
        // Depending on whether the field name is an array or a string will determine where we get it from.
        if ($row['is_array'] === TRUE)
        {
            $this->_field_data[$field]['postdata'] = $this->_reduce_array($validation_array, $row['keys']);
        }
        elseif (isset($validation_array[$field]) && $validation_array[$field] !== '')
        {
            $this->_field_data[$field]['postdata'] = $validation_array[$field];
        }

        // Don't try to validate if we have no rules set
        if (empty($row['rules']))
        {
            continue;
        }

        $this->_execute($row, explode('|', $row['rules']), $this->_field_data[$field]['postdata']);
    }
于 2012-09-07T23:53:39.750 に答える