예제 #1
0
파일: Abstract.php 프로젝트: kevinwan/xf
 /**
  * 设置表字段资料
  * @param string $name 字段名称
  * @param mixed $value 值
  */
 public function __set($name, $value)
 {
     //设置表字段资料
     if (is_array($this->_result_array) && array_key_exists($name, $this->_result_array)) {
         if ($name != $this->getPrimaryKey()) {
             if (strpos($name, '_all_data_count') === false) {
                 if (isset($this->_field_change_array[$name])) {
                     $this->_field_change_array[$name]['count']++;
                     $this->_field_change_array[$name]['log'][] = $value;
                 } else {
                     $this->_field_change_array[$name]['count'] = 1;
                     $this->_field_change_array[$name]['log'][] = $value;
                 }
             }
             if ($value === NULL) {
                 unset($this->_result_array[$name]);
                 return;
             }
             $value = XF_Functions::numberToString($value);
             if ($this->_set_var_validate == true && $this->_field_validate_rule) {
                 $data = array($name => $value);
                 if (XF_Db_Table_Validate::getInstance()->validateData($data, $this->getFieldValidateRule()->toArray()) === false) {
                     throw new XF_Db_Table_Exception(XF_DataPool::getInstance()->get('TableFieldDataValidateError'));
                 }
                 $this->_result_array[$name] = $data[$name];
             } else {
                 $this->_result_array[$name] = $value;
             }
         }
     } else {
         //2013-1-9
         if (strpos($name, '[]') !== false) {
             $name = str_replace('[]', '', $name);
             $this->_result_array[$name][] = XF_Functions::numberToString($value);
         } else {
             $this->_result_array[$name] = XF_Functions::numberToString($value);
         }
     }
 }