<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## TP5實戰技巧實例---開發思路 > 子曰:“學而不思則罔,思而不學則殆。” [TOC] ### 利用TP的MVC框架 做快速開發 >[success] 寫在前面的話:既然選擇TP5框架,我推薦大家要通讀完全開發手冊,我這里并不是要大家記住每一個方法,每一個細節.而是要求大家心理清楚TP5到底有哪些功能,能替我們解決什么樣的問題! 在程序開發中,隨著前端的技術發展,以及跨平臺的綜合應用,PHP為主流的程序開發越來越側重開發API. 我們就已API開發為例,介紹一些開發的實際流程. ![](https://box.kancloud.cn/2eb2dc6276bbce6ab92710731eabcb53_740x321.png) >[info] 一 控制器(Controller) > 獲取參數數據 > 二 驗證器(Validate) > 驗證參數數據 > 三 模型 (model) > 處理邏輯和數據 返回結果 > 四 控制器(Controller) > 接受模型返回數據 顯示數據 #### 控制器數據獲取和處理 現在我從網上某TP5開源系統中找了一段控制器中的代碼 ~~~ public function add() { //接收數據 if (Request::instance()->isPost()) { $data['name'] = input('post.adname'); $data['description'] = input('post.description'); $data['link'] = input('post.link'); $data['position'] = input('post.pos'); $data['level'] = input('post.level'); $data['createtime'] = time(); //鏈接圖片 $coverPath = input('post.banner_path'); //實例化驗證器 $validate = Loader::validate('Banner'); //驗證 if (!$validate->scene('add')->check($data)) { return $this->error($validate->getError()); } //添加封面圖 if ($coverPath) { $data['banner_path'] = $coverPath; } //插入數據表 $result = Db::name('Banner')->insert($data); if ($result) { return $this->success('添加成功',url('admin/banner/index')); } else { return $this->error('添加失敗'); } } else { $pos=Db::name('BannerPosition')->where('status',1)->field('id,title')->select(); $this->assign('pos',$pos); return $this->fetch('add'); } } ~~~ >[warning] 這段代碼是其實并沒有大的問題 這段添加代碼中整合靜態頁和數據邏輯處理 當post提交時候處理數據,get提交時候渲染靜態頁面 但有些問題還是能再改進一下就完美了 * * * * * 題外話:我現在我來簡單說一下這段代碼一些問題 1.在接收片段中使用了Request::instance()->isPost() 既然繼承控制器可以直接使用$this->request->isPost() 2.過多的使用了input助手函數 3.非MVC理念 model被完全忽略 * * * * * 我們先講一下控制器數據獲取和處理.我們還拿上面的源代碼 進行改進和示范吧 下面是我改進的方案,大家只要理解這樣做的好處就可以了.我會先定義一個參數數據的變量數組$param ~~~ $param=[ 'name'=>'adname' 'description'=>'description' ... ... ]; ~~~ 我就寫兩個 做一下示范 另外我在控制器基類里寫了下面一段代碼 ~~~ /** * 數據庫字段 網頁字段轉換 * #User: Mikkle * #Email:776329498@qq.com * #Date: * @param $array 轉化數組 * @return 返回數據數組 */ protected function buildParam($array) { $data=[]; if (is_array($array)){ foreach( $array as $item=>$value ){ $data[$item] = $this->request->param($value); } } return $data; } ~~~ 那我在繼承基類的控制器中 這樣寫代碼就可以執行了,$param_data就是你要獲取的參數值. ~~~ $param = [ 'name'=>'adname' 'description'=>'description' ]; $param_data = $this->buildParam($param); ~~~ >[info]如上面的例子中的 $data['createtime'] = time(); 這種固定的值的添加 記得扔到model的自動完成的方法完成 詳情參見 http://www.hmoore.net/mikkle/thinkphp5_study/331967 #### 控制器中數據值的驗證 現在 數據已經獲取 下一步就要進行數據驗證 >[danger] 永遠不要相信前端發送過來的數據 把控絕對不能忽略 當然前端的校驗也是需要的 當后端必須要把關 上面這段驗證的代碼是沒有問題的 可以使用 ~~~ //實例化驗證器 $validate = Loader::validate('Banner'); //驗證 if (!$validate->scene('add')->check($data)) { return $this->error($validate->getError()); } ~~~ 當然 使用官方的教程里的方法也是可以的 ~~~ $result = $this->validate($data, $validate_name); if (true !== $result) return ['code' => '1003', 'msg' => $result,]; ~~~ >[info] $validate_name 你控制器的名稱 #### 驗證數據通過后調用Model里的方法獲取返回值 ~~~ $model_edit = Loader::model($model_name); if (!$model_edit) return $this->showReturnCode(1010); $data = $model_edit->$action_name($param_data); ~~~ >[info] $model_name 你模型的名稱 > $action_name 你模型中執行方法的名稱 這時 絕大多少的操作就基本完成了 根據需求返回$data的值就行了 ##現在就是思考的時間 萬能的yuan們 如何才能讓開發更簡單呢 未完 待續-- 詳情見下節 大家希望后續看到哪方面的 可以在這里留言給我!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看