コード例 #1
0
ファイル: Model.php プロジェクト: shiqwang/think
 /**
  * 创建数据对象 但不保存到数据库
  * @access public
  * @param mixed $data 创建数据
  * @param string $type 状态
  * @return mixed
  * @throws \think\Exception
  */
 public function create($data = '', $type = '')
 {
     // 如果没有传值默认取POST数据
     if (empty($data)) {
         $data = \think\Input::post();
     } elseif (is_object($data)) {
         $data = get_object_vars($data);
     }
     // 验证数据
     if (empty($data) || !is_array($data)) {
         throw new Exception('invalid data type');
     }
     // 状态
     $type = $type ? $type : (!empty($data[$this->getPk()]) ? self::MODEL_UPDATE : self::MODEL_INSERT);
     // 检测提交字段的合法性
     if (isset($this->options['field'])) {
         // $this->field('field1,field2...')->create()
         $fields = $this->options['field'];
         unset($this->options['field']);
     } elseif (self::MODEL_INSERT == $type && isset($this->insertFields)) {
         $fields = $this->insertFields;
     } elseif (self::MODEL_UPDATE == $type && isset($this->updateFields)) {
         $fields = $this->updateFields;
     }
     if (isset($fields)) {
         if (is_string($fields)) {
             $fields = explode(',', $fields);
         }
         foreach ($data as $key => $val) {
             if (!in_array($key, $fields)) {
                 unset($data[$key]);
             }
         }
     }
     // 过滤创建的数据
     $this->_create_filter($data);
     // 赋值当前数据对象
     $this->data = $data;
     // 返回创建的数据以供其他调用
     return $data;
 }
コード例 #2
0
ファイル: Auto.php プロジェクト: poettian/think
 /**
  * 创建数据对象 但不保存到数据库
  * @access public
  * @param mixed $data 创建数据
  * @param string $type 状态
  * @return mixed
  */
 public function create($data = '', $type = '')
 {
     // 如果没有传值默认取POST数据
     if (empty($data)) {
         $data = \think\Input::post();
     } elseif (is_object($data)) {
         $data = get_object_vars($data);
     }
     // 验证数据
     if (empty($data) || !is_array($data)) {
         $this->error = Lang::get('_DATA_TYPE_INVALID_');
         return false;
     }
     $pk = $this->getPk();
     // 状态
     $type = $type ? $type : (is_string($pk) && !empty($data[$pk]) ? self::MODEL_UPDATE : self::MODEL_INSERT);
     $type = 1 << $type - 1;
     // 字段列表
     $keys = array_keys($data);
     // 检测提交字段的合法性
     if (isset($this->options['field'])) {
         // $this->field('field1,field2...')->create()
         $fields = $this->options['field'];
         unset($this->options['field']);
     } elseif (self::MODEL_INSERT == $type && isset($this->insertFields)) {
         $fields = $this->insertFields;
     } elseif (self::MODEL_UPDATE == $type && isset($this->updateFields)) {
         $fields = $this->updateFields;
     }
     if (isset($fields)) {
         if (is_string($fields)) {
             $fields = explode(',', $fields);
         }
         // 判断令牌验证字段
         if (Config::get('token_on')) {
             $fields[] = Config::get('token_name');
         }
         foreach ($keys as $i => $key) {
             if (!in_array($key, $fields)) {
                 unset($keys[$i]);
                 unset($data[$key]);
             }
         }
     }
     // 数据自动验证
     if (!$this->_autoValidation($data, $type)) {
         return false;
     }
     // 验证完成生成数据对象
     if (empty($this->options['link'])) {
         // 开启字段检测并且没有关联表 则过滤非法字段数据
         $fields = $this->getFields();
         foreach ($keys as $i => $key) {
             if (!in_array($key, $fields)) {
                 unset($data[$key]);
             }
         }
     }
     // 创建完成对数据进行自动处理
     $this->_autoOperation($data, $type);
     // 验证后的回调方法
     $this->_after_create($data, $this->options);
     // 赋值当前数据对象
     $this->data = $data;
     // 返回创建的数据以供其他调用
     return $data;
 }
コード例 #3
0
ファイル: inputTest.php プロジェクト: zhouyaozhouyao/tp5.0
 public function testSuperglobals()
 {
     Input::setFilter('trim');
     $_GET['get'] = 'get value ';
     $this->assertEquals('get value', Input::get('get'));
     $_POST['post'] = 'post value ';
     $this->assertEquals('post value', Input::post('post'));
     $_SERVER['REQUEST_METHOD'] = 'POST';
     $this->assertEquals('post value', Input::param('post'));
     $this->assertEquals(null, Input::param('get'));
     $_SERVER['REQUEST_METHOD'] = 'GET';
     $this->assertEquals('get value', Input::param('get'));
     $this->assertEquals(null, Input::param('post'));
     $this->assertEquals(null, Input::param('put'));
     $_REQUEST = array_merge($_GET, $_POST);
     $this->assertEquals('get value', Input::request('get'));
     session_start();
     $_SESSION['test'] = 'session value ';
     $this->assertEquals('session value', Input::session('test'));
     session_destroy();
     $_COOKIE['cookie'] = 'cookie value ';
     $this->assertEquals('cookie value', Input::cookie('cookie'));
     $_SERVER['REQUEST_METHOD'] = 'GET ';
     $this->assertEquals('GET', Input::server('REQUEST_METHOD'));
     $GLOBALS['total'] = 1000;
     $this->assertEquals(1000, Input::globals('total'));
     $this->assertEquals('testing', Input::env('APP_ENV'));
     //$_SERVER['PATH_INFO'] = 'path/info';
     //$path = $_SERVER['PATH_INFO'] ? explode('/', $_SERVER['PATH_INFO'])[0] : '';
     //$this->assertEquals($path, Input::path('0', ''));
     $_FILES = ['file' => ['name' => 'test.png', 'type' => 'image/png', 'tmp_name' => '/tmp/php5Wx0aJ', 'error' => 0, size => 15726]];
     $this->assertEquals('image/png', Input::file('file.type'));
 }
コード例 #4
0
ファイル: Model.php プロジェクト: klsf/kldns
 /**
  * 创建数据对象 但不保存到数据库
  * @access public
  * @param mixed $data 创建数据
  * @return mixed
  * @throws \think\Exception
  */
 public function create($data = '')
 {
     // 如果没有传值默认取POST数据
     if (empty($data)) {
         $data = \think\Input::post();
     } elseif (is_object($data)) {
         $data = get_object_vars($data);
     }
     // 验证数据
     if (empty($data) || !is_array($data)) {
         throw new Exception('invalid data type');
     }
     // 检测提交字段的合法性
     if (isset($this->options['field'])) {
         // $this->field('field1,field2...')->create()
         $fields = $this->options['field'];
         unset($this->options['field']);
         if (is_string($fields)) {
             $fields = explode(',', $fields);
         }
         foreach ($data as $key => $val) {
             if (!in_array($key, $fields)) {
                 unset($data[$key]);
             }
         }
     }
     // 数据自动验证
     if (!$this->dataValidate($data)) {
         return false;
     }
     // 数据自动填充
     $this->dataFill($data);
     // 过滤创建的数据
     $this->_create_filter($data);
     // 赋值当前数据对象
     $this->data = $data;
     // 返回创建的数据以供其他调用
     return $data;
 }
コード例 #5
0
ファイル: InputTest.php プロジェクト: cokeboL/think
 public function testSuperglobals()
 {
     Input::$filter = 'trim';
     $_GET['get'] = 'get value ';
     $this->assertEquals('get value', Input::get('get'));
     $_POST['post'] = 'post value ';
     $this->assertEquals('post value', Input::post('post'));
     $_SERVER['REQUEST_METHOD'] = 'POST';
     $this->assertEquals('post value', Input::param('post'));
     $this->assertEquals(null, Input::param('get'));
     $_SERVER['REQUEST_METHOD'] = 'GET';
     $this->assertEquals('get value', Input::param('get'));
     $this->assertEquals(null, Input::param('post'));
     session_start();
     $_SESSION['test'] = 'session value ';
     $this->assertEquals('session value', Input::session('test'));
     session_destroy();
     $_COOKIE['cookie'] = 'cookie value ';
     $this->assertEquals('cookie value', Input::cookie('cookie'));
     $_SERVER['REQUEST_METHOD'] = 'GET ';
     $this->assertEquals('GET', Input::server('REQUEST_METHOD'));
     $this->assertEquals('testing', Input::env('APP_ENV'));
 }